[01/61] Introduce can_scroll method

Message ID 20190704170311.15982-2-tom@tromey.com
State New
Headers show
Series
  • More TUI refactorings
Related show

Commit Message

Tom Tromey July 4, 2019, 5:02 p.m.
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(-)

-- 
2.17.2

Patch

diff --git a/gdb/tui/tui-command.c b/gdb/tui/tui-command.c
index 259620f7ce7..bd16f801d26 100644
--- a/gdb/tui/tui-command.c
+++ b/gdb/tui/tui-command.c
@@ -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)
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index 412be1ce756..6a243c3d2f9 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -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: