aboutsummaryrefslogtreecommitdiffhomepage
path: root/interface-ncurses.cpp
diff options
context:
space:
mode:
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;