diff --git a/src/fe-text/mainwindows.c b/src/fe-text/mainwindows.c index c5fa3d25..260b4dad 100644 --- a/src/fe-text/mainwindows.c +++ b/src/fe-text/mainwindows.c @@ -64,19 +64,38 @@ static void mainwindow_resize(MAIN_WINDOW_REC *window, int ychange, int xchange) if (ychange == 0 && !xchange) return; window->lines = window->last_line-window->first_line+1; +#ifdef HAVE_CURSES_WRESIZE wresize(window->curses_win, window->lines, COLS); mvwin(window->curses_win, window->first_line, 0); +#else + delwin(window->curses_win); + window->curses_win = newwin(window->lines, COLS, window->first_line, 0); +#endif for (tmp = windows; tmp != NULL; tmp = tmp->next) { WINDOW_REC *rec = tmp->data; - if (rec->gui_data != NULL && WINDOW_GUI(rec)->parent == window) + if (rec->gui_data != NULL && + WINDOW_GUI(rec)->parent == window) gui_window_resize(rec, ychange, xchange); } + gui_window_redraw(window->active); signal_emit("mainwindow resized", 1, window); } +void mainwindows_recreate(void) +{ + GSList *tmp; + + for (tmp = mainwindows; tmp != NULL; tmp = tmp->next) { + MAIN_WINDOW_REC *rec = tmp->data; + + rec->curses_win = newwin(rec->lines, COLS, rec->first_line, 0); + gui_window_redraw(rec->active); + } +} + MAIN_WINDOW_REC *mainwindow_create(void) { MAIN_WINDOW_REC *rec, *parent; diff --git a/src/fe-text/mainwindows.h b/src/fe-text/mainwindows.h index c163c366..db4eda57 100644 --- a/src/fe-text/mainwindows.h +++ b/src/fe-text/mainwindows.h @@ -24,6 +24,7 @@ void mainwindow_destroy(MAIN_WINDOW_REC *window); void mainwindows_redraw(void); void mainwindows_resize(int ychange, int xchange); +void mainwindows_recreate(void); int mainwindows_reserve_lines(int count, int up); diff --git a/src/fe-text/screen.c b/src/fe-text/screen.c index d640ddfb..4d6f101c 100644 --- a/src/fe-text/screen.c +++ b/src/fe-text/screen.c @@ -65,11 +65,12 @@ static void sig_winch(int p) /* Resize curses terminal */ ychange = ws.ws_row-LINES; xchange = ws.ws_col-COLS; -#ifdef HAVE_CURSES_RESIZETERM +#ifdef xHAVE_CURSES_RESIZETERM resizeterm(ws.ws_row, ws.ws_col); #else deinit_screen(); init_screen(); + mainwindows_recreate(); #endif mainwindows_resize(ychange, xchange != 0);