Introduce can_scroll method
authorTom Tromey <tom@tromey.com>
Mon, 24 Jun 2019 02:39:57 +0000 (20:39 -0600)
committerTom Tromey <tom@tromey.com>
Wed, 17 Jul 2019 18:18:51 +0000 (12:18 -0600)
This introduces a "can_scroll" method, removing a spot that explicitly
checks a window's type.

gdb/ChangeLog
2019-07-17  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
gdb/tui/tui-command.c
gdb/tui/tui-data.h

index 701b2c90d0481136247ff26201ecb665b656c045..28b0b5334c0adb32970e3130c37d88d98fb3b99f 100644 (file)
@@ -1,3 +1,10 @@
+2019-07-17  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.
+
 2019-07-17  Tom Tromey  <tromey@adacore.com>
 
        * ui-out.h (class ui_out) <field_signed, field_fmt_signed,
index 259620f7ce7a1f05f894c88a7453713a0da1a5dd..bd16f801d26d6542ed1e6756f8a3d78c3ab7a254 100644 (file)
@@ -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)
index 412be1ce75694f1fd2f3d5d5b0b58ea6895790e9..6a243c3d2f97ffd476604a846d0838b187d4818e 100644 (file)
@@ -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: