diff options
author | Tom Tromey <tromey@adacore.com> | 2019-03-08 13:41:55 -0700 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2019-03-14 05:47:10 -0600 |
commit | 6f11e6824e15bd40fe1e7b245a22865c6ef8c7bd (patch) | |
tree | c4ba703384d8adcb73a5231d1d07563d44213957 /gdb/tui/tui-hooks.c | |
parent | a0148d8416f6c692b83acc77cf838b3e7929a249 (diff) | |
download | gdb-6f11e6824e15bd40fe1e7b245a22865c6ef8c7bd.zip gdb-6f11e6824e15bd40fe1e7b245a22865c6ef8c7bd.tar.gz gdb-6f11e6824e15bd40fe1e7b245a22865c6ef8c7bd.tar.bz2 |
Make TUI react to "set style enabled"
When the user toggles "set style enabled", the TUI should react by
redrawing the source window, if necessary. This patch implements this
behavior.
No test because the TUI is generally not tested.
This version of the patch incorporates Pedro's patch to provide a
clean way to force the TUI to update the source window's contents.
gdb/ChangeLog
2019-03-14 Pedro Alves <palves@redhat.com>
Tom Tromey <tromey@adacore.com>
* tui/tui-winsource.h (tui_refill_source_window): Declare.
* tui/tui-winsource.c (tui_refill_source_window): New function,
from...
(tui_horizontal_source_scroll): ... here. Move some logic.
* cli/cli-style.c (set_style_enabled): Notify new observable.
* tui/tui-hooks.c (tui_redisplay_source): New function.
(tui_attach_detach_observers): Attach or detach
tui_redisplay_source.
* observable.h (source_styling_changed): New observable.
* observable.c: Define source_styling_changed observable.
Diffstat (limited to 'gdb/tui/tui-hooks.c')
-rw-r--r-- | gdb/tui/tui-hooks.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c index 98c6fd6..4a1d79e 100644 --- a/gdb/tui/tui-hooks.c +++ b/gdb/tui/tui-hooks.c @@ -204,6 +204,18 @@ tui_normal_stop (struct bpstats *bs, int print_frame) tui_refresh_frame_and_register_information (/*registers_too_p=*/1); } +/* Observer for source_cache_cleared. */ + +static void +tui_redisplay_source () +{ + if (tui_is_window_visible (SRC_WIN)) + { + /* Force redisplay. */ + tui_refill_source_window (tui_win_list[SRC_WIN]); + } +} + /* Token associated with observers registered while TUI hooks are installed. */ static const gdb::observers::token tui_observers_token {}; @@ -239,6 +251,8 @@ tui_attach_detach_observers (bool attach) tui_normal_stop, attach); attach_or_detach (gdb::observers::register_changed, tui_register_changed, attach); + attach_or_detach (gdb::observers::source_styling_changed, + tui_redisplay_source, attach); } /* Install the TUI specific hooks. */ |