diff --git a/gdb/ChangeLog b/gdb/ChangeLog index eadf4938f74..e669e098f67 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2015-04-28 Patrick Palka + + * tui/tui-win.c (tui_sigwinch_handler): Remove now-stale comment. + (tui_sigwinch_handler): Still update our idea of + the terminal's width and height even when TUI is not active. + 2015-04-28 Patrick Palka * utils.h (set_screen_width_and_height): Declare. diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c index 68309771764..683c0eda33e 100644 --- a/gdb/tui/tui-win.c +++ b/gdb/tui/tui-win.c @@ -836,12 +836,6 @@ static struct async_signal_handler *tui_sigwinch_token; static void tui_sigwinch_handler (int signal) { - /* Set win_resized to TRUE and asynchronously invoke our resize callback. If - the callback is invoked while TUI is active then it ought to successfully - resize the screen, resetting win_resized to FALSE. Of course, if the - callback is invoked while TUI is inactive then it will do nothing; in that - case, win_resized will remain TRUE until we get a chance to synchronously - resize the screen from tui_enable(). */ mark_async_signal_handler (tui_sigwinch_token); tui_set_win_resized_to (TRUE); } @@ -850,15 +844,26 @@ tui_sigwinch_handler (int signal) static void tui_async_resize_screen (gdb_client_data arg) { - if (!tui_active) - return; - rl_resize_terminal (); - tui_resize_all (); - tui_refresh_all_win (); - tui_update_gdb_sizes (); - tui_set_win_resized_to (FALSE); - tui_redisplay_readline (); + + if (!tui_active) + { + int screen_height, screen_width; + + rl_get_screen_size (&screen_height, &screen_width); + set_screen_width_and_height (screen_width, screen_height); + + /* win_resized is left set so that the next call to tui_enable() + resizes the TUI windows. */ + } + else + { + tui_resize_all (); + tui_refresh_all_win (); + tui_update_gdb_sizes (); + tui_set_win_resized_to (FALSE); + tui_redisplay_readline (); + } } #endif