diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/tui/tui-win.c | 31 |
2 files changed, 24 insertions, 13 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index eadf493..e669e09 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2015-04-28 Patrick Palka <patrick@parcs.ath.cx> + * 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 <patrick@parcs.ath.cx> + * utils.h (set_screen_width_and_height): Declare. * utils.c (set_screen_width_and_height): Define. * tui/tui-win.c (tui_update_gdb_sizes): Use it. diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c index 6830977..683c0ed 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) { + rl_resize_terminal (); + if (!tui_active) - return; + { + int screen_height, screen_width; - rl_resize_terminal (); - tui_resize_all (); - tui_refresh_all_win (); - tui_update_gdb_sizes (); - tui_set_win_resized_to (FALSE); - tui_redisplay_readline (); + 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 |