[01/15] Simplify TUI boxing

Message ID 20190814162132.31424-2-tom@tromey.com
State New, archived
Headers

Commit Message

Tom Tromey Aug. 14, 2019, 4:21 p.m. UTC
  In the TUI, whether or not a window can be boxed is a property of the
window's type.  This adds a can_box method to the window classes, and
changes tui_make_window to defer to this, removing the "box_it"
paramter.  This also lets us remove "enum tui_box", as it is no longer
used.

gdb/ChangeLog
2019-08-14  Tom Tromey  <tom@tromey.com>

	* tui/tui-wingeneral.h (tui_make_window): Update.
	* tui/tui-wingeneral.c (tui_make_window): Remove "box_it"
	parameter.
	(tui_gen_win_info::make_visible): Update.
	* tui/tui-regs.c (tui_data_window::display_registers_from):
	Update.
	* tui/tui-layout.c (show_source_disasm_command)
	(show_source_or_disasm_and_command): Update.
	* tui/tui-data.h (struct tui_gen_win_info) <can_box>: New method.
	(enum tui_box): Remove.
	(struct tui_win_info) <can_box>: New method.
	* tui/tui-command.h (struct tui_cmd_window) <can_box>: New
	method.
---
 gdb/ChangeLog            | 16 ++++++++++++++++
 gdb/tui/tui-command.h    |  5 +++++
 gdb/tui/tui-data.h       | 18 +++++++++++-------
 gdb/tui/tui-layout.c     |  4 ++--
 gdb/tui/tui-regs.c       |  2 +-
 gdb/tui/tui-wingeneral.c |  7 +++----
 gdb/tui/tui-wingeneral.h |  2 +-
 7 files changed, 39 insertions(+), 15 deletions(-)
  

Patch

diff --git a/gdb/tui/tui-command.h b/gdb/tui/tui-command.h
index af80b1449fa..14d77500882 100644
--- a/gdb/tui/tui-command.h
+++ b/gdb/tui/tui-command.h
@@ -55,6 +55,11 @@  struct tui_cmd_window : public tui_win_info
     return false;
   }
 
+  bool can_box () const override
+  {
+    return false;
+  }
+
   int start_line = 0;
 
 protected:
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index 3493b5ed68b..017e7a40f52 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -67,6 +67,12 @@  public:
   virtual void reset (int height, int width,
 		      int origin_x, int origin_y);
 
+  /* Return true if this can be boxed.  */
+  virtual bool can_box () const
+  {
+    return false;
+  }
+
   /* Window handle.  */
   WINDOW *handle = nullptr;
   /* Type of window.  */
@@ -85,13 +91,6 @@  public:
   char *title = nullptr;
 };
 
-/* Whether or not a window should be drawn with a box.  */
-enum tui_box
-{
-  DONT_BOX_WINDOW = 0,
-  BOX_WINDOW
-};
-
 /* Constant definitions.  */
 #define DEFAULT_TAB_LEN         8
 #define NO_SRC_STRING           "[ No Source Available ]"
@@ -248,6 +247,11 @@  public:
     return true;
   }
 
+  bool can_box () const override
+  {
+    return true;
+  }
+
   void check_and_display_highlight_if_needed ();
 
   /* Can this window ever be highlighted?  */
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 3683835954d..69b929d37b2 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -546,7 +546,7 @@  show_source_disasm_command (void)
 		      tui_term_height () - cmd_height);
   /* FIXME tui_cmd_window won't recreate the handle on
      make_visible, so we need this instead.  */
-  tui_make_window (TUI_CMD_WIN, DONT_BOX_WINDOW);
+  tui_make_window (TUI_CMD_WIN);
   current_layout = SRC_DISASSEM_COMMAND;
 }
 
@@ -674,6 +674,6 @@  show_source_or_disasm_and_command (enum tui_layout_type layout_type)
 		      src_height);
   /* FIXME tui_cmd_window won't recreate the handle on
      make_visible, so we need this instead.  */
-  tui_make_window (TUI_CMD_WIN, DONT_BOX_WINDOW);
+  tui_make_window (TUI_CMD_WIN);
   current_layout = layout_type;
 }
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index aaba94da467..bb8d545c47b 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -320,7 +320,7 @@  tui_data_window::display_registers_from (int start_element_no)
 		  data_item_win->width = item_win_width;
 		  data_item_win->origin.x = (item_win_width * j) + 1;
 		  data_item_win->origin.y = cur_y;
-		  tui_make_window (data_item_win, DONT_BOX_WINDOW);
+		  tui_make_window (data_item_win);
                   scrollok (data_item_win->handle, FALSE);
 		}
               touchwin (data_item_win->handle);
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index 8ff5aa5fce8..e2d06bcebad 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -125,7 +125,7 @@  tui_win_info::check_and_display_highlight_if_needed ()
 
 
 void
-tui_make_window (struct tui_gen_win_info *win_info, enum tui_box box_it)
+tui_make_window (struct tui_gen_win_info *win_info)
 {
   WINDOW *handle;
 
@@ -136,7 +136,7 @@  tui_make_window (struct tui_gen_win_info *win_info, enum tui_box box_it)
   win_info->handle = handle;
   if (handle != NULL)
     {
-      if (box_it == BOX_WINDOW)
+      if (win_info->can_box ())
 	box_win (win_info, NO_HILITE);
       win_info->is_visible = true;
       scrollok (handle, TRUE);
@@ -155,8 +155,7 @@  tui_gen_win_info::make_visible (bool visible)
   is_visible = visible;
 
   if (visible)
-    tui_make_window (this, (tui_win_is_auxiliary (type)
-			    ? DONT_BOX_WINDOW : BOX_WINDOW));
+    tui_make_window (this);
   else
     {
       tui_delete_win (handle);
diff --git a/gdb/tui/tui-wingeneral.h b/gdb/tui/tui-wingeneral.h
index 54d6eb684f7..6a9de4c9b1c 100644
--- a/gdb/tui/tui-wingeneral.h
+++ b/gdb/tui/tui-wingeneral.h
@@ -31,7 +31,7 @@  struct tui_gen_win_info;
 extern void tui_make_all_invisible (void);
 
 extern void tui_unhighlight_win (struct tui_win_info *);
-extern void tui_make_window (struct tui_gen_win_info *, enum tui_box);
+extern void tui_make_window (struct tui_gen_win_info *);
 extern void tui_highlight_win (struct tui_win_info *);
 extern void tui_refresh_all ();
 extern void tui_delete_win (WINDOW *window);