[01/61] Introduce can_scroll method
Commit Message
This introduces a "can_scroll" method, removing a spot that explicitly
checks a window's type.
2019-07-04 Tom Tromey <tom@tromey.com>
* tui/tui-data.h (struct tui_win_info) <can_scroll>: New method.
(struct tui_cmd_window) <can_scroll>: New method.
* tui/tui-command.c (tui_dispatch_ctrl_char): Use can_scroll
method.
---
gdb/ChangeLog | 7 +++++++
gdb/tui/tui-command.c | 7 +++----
gdb/tui/tui-data.h | 11 +++++++++++
3 files changed, 21 insertions(+), 4 deletions(-)
@@ -48,10 +48,9 @@ tui_dispatch_ctrl_char (unsigned int ch)
if (ch == '\f')
tui_refresh_all_win ();
- /* If the command window has the logical focus, or no-one does
- assume it is the command window; in this case, pass the character
- on through and do nothing here. */
- if (win_info == NULL || win_info == TUI_CMD_WIN)
+ /* If no window has the focus, or if the focus window can't scroll,
+ just pass the character through. */
+ if (win_info == NULL || !win_info->can_scroll ())
return ch;
switch (ch)
@@ -352,6 +352,12 @@ public:
void left_scroll (int num_to_scroll);
void right_scroll (int num_to_scroll);
+ /* Return true if this window can be scrolled, false otherwise. */
+ virtual bool can_scroll () const
+ {
+ return true;
+ }
+
/* Can this window ever be highlighted? */
bool can_highlight = true;
@@ -524,6 +530,11 @@ struct tui_cmd_window : public tui_win_info
return CMD_NAME;
}
+ bool can_scroll () const override
+ {
+ return false;
+ }
+
int start_line = 0;
protected: