[45/66] Introduce tui_win_info::update_tab_width

Message ID 20190623224329.16060-46-tom@tromey.com
State New, archived
Headers

Commit Message

Tom Tromey June 23, 2019, 10:43 p.m. UTC
  This introduces a new tui_win_info::update_tab_width method, and
changes the TUI to call it.  This fixes another spot that was checking
the window type.

2019-06-23  Tom Tromey  <tom@tromey.com>

	* tui/tui-win.c (tui_source_window_base::update_tab_width): New
	method.
	(update_tab_width): Call update_tab_width method.
	* tui/tui-data.h (struct tui_win_info)
	(struct tui_source_window_base) <update_tab_width>: New methods.
---
 gdb/ChangeLog      |  8 ++++++++
 gdb/tui/tui-data.h |  7 +++++++
 gdb/tui/tui-win.c  | 33 +++++++++++++++++----------------
 3 files changed, 32 insertions(+), 16 deletions(-)
  

Patch

diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index caf3bb4f408..298ee452d50 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -306,6 +306,11 @@  public:
   /* Compute the maximum height of this window.  */
   virtual int max_height () const;
 
+  /* Called after the tab width has been changed.  */
+  virtual void update_tab_width ()
+  {
+  }
+
   /* Set whether this window is highglighted.  */
   void set_highlight (bool highlight)
   {
@@ -362,6 +367,8 @@  public:
 
   void set_new_height (int height) override;
 
+  void update_tab_width () override;
+
   /* Does locator belongs to this window?  */
   bool m_has_locator = false;
   /* Execution information window.  */
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index b92eb505b31..8a4e64f3c88 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -923,29 +923,30 @@  unsigned int tui_tab_width = DEFAULT_TAB_LEN;
 
 static unsigned int internal_tab_width = DEFAULT_TAB_LEN;
 
-/* After the tab width is set, call this to update the relevant
-   windows.  */
+/* See tui-data.h.  */
 
-static void
-update_tab_width ()
+void
+tui_source_window_base::update_tab_width ()
 {
   /* We don't really change the height of any windows, but
      calling these 2 functions causes a complete regeneration
      and redisplay of the window's contents, which will take
      the new tab width into account.  */
-  if (tui_win_list[SRC_WIN]
-      && tui_win_list[SRC_WIN]->is_visible)
-    {
-      make_invisible_and_set_new_height (TUI_SRC_WIN,
-					 TUI_SRC_WIN->height);
-      make_visible_with_new_height (TUI_SRC_WIN);
-    }
-  if (tui_win_list[DISASSEM_WIN]
-      && tui_win_list[DISASSEM_WIN]->is_visible)
+  make_invisible_and_set_new_height (this, height);
+  make_visible_with_new_height (this);
+}
+
+/* After the tab width is set, call this to update the relevant
+   windows.  */
+
+static void
+update_tab_width ()
+{
+  for (int win_type = SRC_WIN; win_type < MAX_MAJOR_WINDOWS; win_type++)
     {
-      make_invisible_and_set_new_height (TUI_DISASM_WIN,
-					 TUI_DISASM_WIN->height);
-      make_visible_with_new_height (TUI_DISASM_WIN);
+      if (tui_win_list[win_type] != NULL
+	  && tui_win_list[win_type]->is_visible)
+	tui_win_list[win_type]->update_tab_width ();
     }
 }