mirror of
https://github.com/irssi/irssi.git
synced 2024-12-04 14:46:39 -05:00
Still some fixes for curseses without wresize() or resizeterm().
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@579 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
a25a912ec8
commit
92e0995223
@ -64,19 +64,38 @@ static void mainwindow_resize(MAIN_WINDOW_REC *window, int ychange, int xchange)
|
|||||||
if (ychange == 0 && !xchange) return;
|
if (ychange == 0 && !xchange) return;
|
||||||
|
|
||||||
window->lines = window->last_line-window->first_line+1;
|
window->lines = window->last_line-window->first_line+1;
|
||||||
|
#ifdef HAVE_CURSES_WRESIZE
|
||||||
wresize(window->curses_win, window->lines, COLS);
|
wresize(window->curses_win, window->lines, COLS);
|
||||||
mvwin(window->curses_win, window->first_line, 0);
|
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) {
|
for (tmp = windows; tmp != NULL; tmp = tmp->next) {
|
||||||
WINDOW_REC *rec = tmp->data;
|
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_resize(rec, ychange, xchange);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gui_window_redraw(window->active);
|
||||||
signal_emit("mainwindow resized", 1, window);
|
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 *mainwindow_create(void)
|
||||||
{
|
{
|
||||||
MAIN_WINDOW_REC *rec, *parent;
|
MAIN_WINDOW_REC *rec, *parent;
|
||||||
|
@ -24,6 +24,7 @@ void mainwindow_destroy(MAIN_WINDOW_REC *window);
|
|||||||
|
|
||||||
void mainwindows_redraw(void);
|
void mainwindows_redraw(void);
|
||||||
void mainwindows_resize(int ychange, int xchange);
|
void mainwindows_resize(int ychange, int xchange);
|
||||||
|
void mainwindows_recreate(void);
|
||||||
|
|
||||||
int mainwindows_reserve_lines(int count, int up);
|
int mainwindows_reserve_lines(int count, int up);
|
||||||
|
|
||||||
|
@ -65,11 +65,12 @@ static void sig_winch(int p)
|
|||||||
/* Resize curses terminal */
|
/* Resize curses terminal */
|
||||||
ychange = ws.ws_row-LINES;
|
ychange = ws.ws_row-LINES;
|
||||||
xchange = ws.ws_col-COLS;
|
xchange = ws.ws_col-COLS;
|
||||||
#ifdef HAVE_CURSES_RESIZETERM
|
#ifdef xHAVE_CURSES_RESIZETERM
|
||||||
resizeterm(ws.ws_row, ws.ws_col);
|
resizeterm(ws.ws_row, ws.ws_col);
|
||||||
#else
|
#else
|
||||||
deinit_screen();
|
deinit_screen();
|
||||||
init_screen();
|
init_screen();
|
||||||
|
mainwindows_recreate();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mainwindows_resize(ychange, xchange != 0);
|
mainwindows_resize(ychange, xchange != 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user