aboutsummaryrefslogtreecommitdiffhomepage
path: root/interface-ncurses.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-25 09:47:42 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-25 09:47:42 +0100
commitd840485e08d2dc395f57502eba845ac6f2c16d5c (patch)
tree4e9e4e2370db8decb12d24694ec3231a0b7d2491 /interface-ncurses.cpp
parent7fcb41292307b043a7e8c3ba0377347aaec1eb46 (diff)
downloadsciteco-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.cpp13
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;