diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-25 09:47:42 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-25 09:47:42 +0100 |
commit | d840485e08d2dc395f57502eba845ac6f2c16d5c (patch) | |
tree | 4e9e4e2370db8decb12d24694ec3231a0b7d2491 /interface-ncurses.cpp | |
parent | 7fcb41292307b043a7e8c3ba0377347aaec1eb46 (diff) | |
download | sciteco-d840485e08d2dc395f57502eba845ac6f2c16d5c.tar.gz |
NCURSES: fixed popup lines calculation
use the ceiling of the number of entries divided by the calculated number of columns,
ensuring that just enough lines to display all the entries are reserved.
Diffstat (limited to 'interface-ncurses.cpp')
-rw-r--r-- | interface-ncurses.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/interface-ncurses.cpp b/interface-ncurses.cpp index 869e911..fe2c7e7 100644 --- a/interface-ncurses.cpp +++ b/interface-ncurses.cpp @@ -271,9 +271,14 @@ InterfaceNCurses::popup_show(void) popup.longest += 3; popup.list = g_slist_reverse(popup.list); - popup_cols = MIN(popup.length, cols / popup.longest); - popup_lines = (popup.length + popup.length % popup_cols)/popup_cols; + /* popup_cols = floor(cols / popup.longest) */ + popup_cols = MAX(cols / popup.longest, 1); + /* popup_lines = ceil(popup.length / popup_cols) */ + popup_lines = popup.length / popup_cols; + if ((popup.length % popup_cols)) + popup_lines++; popup_lines = MIN(popup_lines, lines - 1); + /* window covers message, scintilla and info windows */ popup.window = newwin(popup_lines, 0, lines - 1 - popup_lines, 0); wbkgdset(popup.window, ' ' | SCI_COLOR_ATTR(COLOR_BLACK, COLOR_BLUE)); @@ -291,8 +296,8 @@ InterfaceNCurses::popup_show(void) cur_file++; - if (cur_line == popup_lines && cur_file < popup.length && - !(cur_file % popup_cols)) { + if (cur_line == popup_lines && !(cur_file % popup_cols) && + cur_file < popup.length) { (void)wattrset(popup.window, A_BOLD); waddstr(popup.window, "..."); break; |