Skip to content

Commit

Permalink
mconf: use function calls instead of ncurses' variables LINES and COLS
Browse files Browse the repository at this point in the history
According to the documentation [1], LINES and COLS are initialized by
initscr(); it does not say anything about the behavior when windows are
resized.

Do not rely on the current implementation of ncurses that updates
these variables on resize, but use the propper function calls to get
window dimensions.

init_dialog() could make use of the variables, but for the sake of
consistency we do not change it's current use of the macro getmaxyx().

[1] ncurses(3X)

Signed-off-by: Dirk Gouders <dirk@gouders.net>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
  • Loading branch information
Dirk Gouders authored and Yann E. MORIN committed Jun 18, 2013
1 parent 1376391 commit 4f2de3e
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 14 deletions.
4 changes: 2 additions & 2 deletions scripts/kconfig/lxdialog/checklist.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@ int dialog_checklist(const char *title, const char *prompt, int height,
max_choice = MIN(list_height, item_count());

/* center dialog box on screen */
x = (COLS - width) / 2;
y = (LINES - height) / 2;
x = (getmaxx(stdscr) - width) / 2;
y = (getmaxy(stdscr) - height) / 2;

draw_shadow(stdscr, y, x, height, width);

Expand Down
4 changes: 2 additions & 2 deletions scripts/kconfig/lxdialog/inputbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
return -ERRDISPLAYTOOSMALL;

/* center dialog box on screen */
x = (COLS - width) / 2;
y = (LINES - height) / 2;
x = (getmaxx(stdscr) - width) / 2;
y = (getmaxy(stdscr) - height) / 2;

draw_shadow(stdscr, y, x, height, width);

Expand Down
4 changes: 2 additions & 2 deletions scripts/kconfig/lxdialog/menubox.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,8 @@ int dialog_menu(const char *title, const char *prompt,
max_choice = MIN(menu_height, item_count());

/* center dialog box on screen */
x = (COLS - width) / 2;
y = (LINES - height) / 2;
x = (getmaxx(stdscr) - width) / 2;
y = (getmaxy(stdscr) - height) / 2;

draw_shadow(stdscr, y, x, height, width);

Expand Down
4 changes: 2 additions & 2 deletions scripts/kconfig/lxdialog/textbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ int dialog_textbox(const char *title, char *tbuf, int initial_height,
width = 0;

/* center dialog box on screen */
x = (COLS - width) / 2;
y = (LINES - height) / 2;
x = (getmaxx(stdscr) - width) / 2;
y = (getmaxy(stdscr) - height) / 2;

draw_shadow(stdscr, y, x, height, width);

Expand Down
13 changes: 9 additions & 4 deletions scripts/kconfig/lxdialog/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,12 @@ void attr_clear(WINDOW * win, int height, int width, chtype attr)

void dialog_clear(void)
{
attr_clear(stdscr, LINES, COLS, dlg.screen.atr);
int lines, columns;

lines = getmaxy(stdscr);
columns = getmaxx(stdscr);

attr_clear(stdscr, lines, columns, dlg.screen.atr);
/* Display background title if it exists ... - SLH */
if (dlg.backtitle != NULL) {
int i, len = 0, skip = 0;
Expand All @@ -269,10 +274,10 @@ void dialog_clear(void)
}

wmove(stdscr, 1, 1);
if (len > COLS - 2) {
if (len > columns - 2) {
const char *ellipsis = "[...] ";
waddstr(stdscr, ellipsis);
skip = len - (COLS - 2 - strlen(ellipsis));
skip = len - (columns - 2 - strlen(ellipsis));
}

for (pos = dlg.subtitles; pos != NULL; pos = pos->next) {
Expand All @@ -298,7 +303,7 @@ void dialog_clear(void)
skip--;
}

for (i = len + 1; i < COLS - 1; i++)
for (i = len + 1; i < columns - 1; i++)
waddch(stdscr, ACS_HLINE);
}
wnoutrefresh(stdscr);
Expand Down
4 changes: 2 additions & 2 deletions scripts/kconfig/lxdialog/yesno.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width)
return -ERRDISPLAYTOOSMALL;

/* center dialog box on screen */
x = (COLS - width) / 2;
y = (LINES - height) / 2;
x = (getmaxx(stdscr) - width) / 2;
y = (getmaxy(stdscr) - height) / 2;

draw_shadow(stdscr, y, x, height, width);

Expand Down

0 comments on commit 4f2de3e

Please sign in to comment.