Introduce max_height method
[deliverable/binutils-gdb.git] / gdb / tui / tui-wingeneral.c
index 3dc62d5d50802f6b7fd407e5e8befebb47031ea8..4d168af0c0952d026cc848abcc3bc2d67e90789c 100644 (file)
@@ -1,7 +1,6 @@
 /* General window behavior.
 
-   Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
-   Inc.
+   Copyright (C) 1998-2019 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -9,7 +8,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -18,9 +17,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
 #include "tui/tui.h"
@@ -34,9 +31,9 @@
 ** PUBLIC FUNCTIONS
 ***********************/
 
-/* Refresh the window.   */
+/* Refresh the window.  */
 void
-tui_refresh_win (struct tui_gen_win_info * win_info)
+tui_refresh_win (struct tui_gen_win_info *win_info)
 {
   if (win_info->type == DATA_WIN && win_info->content_size > 0)
     {
@@ -44,22 +41,21 @@ tui_refresh_win (struct tui_gen_win_info * win_info)
 
       for (i = 0; (i < win_info->content_size); i++)
        {
-         struct tui_gen_win_info * data_item_win_ptr;
+         struct tui_gen_win_info *data_item_win_ptr;
 
-         data_item_win_ptr = &((tui_win_content)
-                            win_info->content)[i]->which_element.data_window;
+         data_item_win_ptr = &win_info->content[i]->which_element.data_window;
          if (data_item_win_ptr != NULL
-             && data_item_win_ptr->handle != (WINDOW *) NULL)
+             && data_item_win_ptr->handle != NULL)
            wrefresh (data_item_win_ptr->handle);
        }
     }
   else if (win_info->type == CMD_WIN)
     {
-      /* Do nothing */
+      /* Do nothing */
     }
   else
     {
-      if (win_info->handle != (WINDOW *) NULL)
+      if (win_info->handle != NULL)
        wrefresh (win_info->handle);
     }
 
@@ -67,11 +63,11 @@ tui_refresh_win (struct tui_gen_win_info * win_info)
 }
 
 
-/* Function to delete the curses window, checking for NULL.   */
+/* Function to delete the curses window, checking for NULL.  */
 void
-tui_delete_win (WINDOW * window)
+tui_delete_win (WINDOW *window)
 {
-  if (window != (WINDOW *) NULL)
+  if (window != NULL)
     delwin (window);
 
   return;
@@ -79,8 +75,9 @@ tui_delete_win (WINDOW * window)
 
 
 /* Draw a border arround the window.  */
-void
-box_win (struct tui_gen_win_info * win_info, int highlight_flag)
+static void
+box_win (struct tui_gen_win_info *win_info, 
+        int highlight_flag)
 {
   if (win_info && win_info->handle)
     {
@@ -94,10 +91,14 @@ box_win (struct tui_gen_win_info * win_info, int highlight_flag)
         attrs = tui_border_attrs;
 
       wattron (win, attrs);
+#ifdef HAVE_WBORDER
       wborder (win, tui_border_vline, tui_border_vline,
                tui_border_hline, tui_border_hline,
                tui_border_ulcorner, tui_border_urcorner,
                tui_border_llcorner, tui_border_lrcorner);
+#else
+      box (win, tui_border_vline, tui_border_hline);
+#endif
       if (win_info->title)
         mvwaddstr (win, 0, 3, win_info->title);
       wattroff (win, attrs);
@@ -106,11 +107,12 @@ box_win (struct tui_gen_win_info * win_info, int highlight_flag)
 
 
 void
-tui_unhighlight_win (struct tui_win_info * win_info)
+tui_unhighlight_win (struct tui_win_info *win_info)
 {
-  if (win_info != NULL && win_info->generic.handle != (WINDOW *) NULL)
+  if (win_info != NULL 
+      && win_info->generic.handle != NULL)
     {
-      box_win ((struct tui_gen_win_info *) win_info, NO_HILITE);
+      box_win (&win_info->generic, NO_HILITE);
       wrefresh (win_info->generic.handle);
       tui_set_win_highlight (win_info, 0);
     }
@@ -118,20 +120,20 @@ tui_unhighlight_win (struct tui_win_info * win_info)
 
 
 void
-tui_highlight_win (struct tui_win_info * win_info)
+tui_highlight_win (struct tui_win_info *win_info)
 {
   if (win_info != NULL
       && win_info->can_highlight
-      && win_info->generic.handle != (WINDOW *) NULL)
+      && win_info->generic.handle != NULL)
     {
-      box_win ((struct tui_gen_win_info *) win_info, HILITE);
+      box_win (&win_info->generic, HILITE);
       wrefresh (win_info->generic.handle);
       tui_set_win_highlight (win_info, 1);
     }
 }
 
 void
-tui_check_and_display_highlight_if_needed (struct tui_win_info * win_info)
+tui_check_and_display_highlight_if_needed (struct tui_win_info *win_info)
 {
   if (win_info != NULL && win_info->generic.type != CMD_WIN)
     {
@@ -146,7 +148,7 @@ tui_check_and_display_highlight_if_needed (struct tui_win_info * win_info)
 
 
 void
-tui_make_window (struct tui_gen_win_info * win_info, int box_it)
+tui_make_window (struct tui_gen_win_info *win_info, int box_it)
 {
   WINDOW *handle;
 
@@ -155,11 +157,11 @@ tui_make_window (struct tui_gen_win_info * win_info, int box_it)
                   win_info->origin.y,
                   win_info->origin.x);
   win_info->handle = handle;
-  if (handle != (WINDOW *) NULL)
+  if (handle != NULL)
     {
       if (box_it == BOX_WINDOW)
        box_win (win_info, NO_HILITE);
-      win_info->is_visible = TRUE;
+      win_info->is_visible = true;
       scrollok (handle, TRUE);
     }
 }
@@ -169,9 +171,9 @@ tui_make_window (struct tui_gen_win_info * win_info, int box_it)
    delete the entire window when making it visible, and create it
    again when making it visible.  */
 static void
-make_visible (struct tui_gen_win_info *win_info, int visible)
+make_visible (struct tui_gen_win_info *win_info, bool visible)
 {
-  /* Don't tear down/recreate command window */
+  /* Don't tear down/recreate command window */
   if (win_info->type == CMD_WIN)
     return;
 
@@ -182,15 +184,16 @@ make_visible (struct tui_gen_win_info *win_info, int visible)
          tui_make_window (win_info,
                           (win_info->type != CMD_WIN
                            && !tui_win_is_auxillary (win_info->type)));
-         win_info->is_visible = TRUE;
+         win_info->is_visible = true;
        }
     }
-  else if (!visible &&
-          win_info->is_visible && win_info->handle != (WINDOW *) NULL)
+  else if (!visible
+          && win_info->is_visible
+          && win_info->handle != NULL)
     {
-      win_info->is_visible = FALSE;
+      win_info->is_visible = false;
       tui_delete_win (win_info->handle);
-      win_info->handle = (WINDOW *) NULL;
+      win_info->handle = NULL;
     }
 
   return;
@@ -199,32 +202,43 @@ make_visible (struct tui_gen_win_info *win_info, int visible)
 void
 tui_make_visible (struct tui_gen_win_info *win_info)
 {
-  make_visible (win_info, 1);
+  make_visible (win_info, true);
 }
 
 void
 tui_make_invisible (struct tui_gen_win_info *win_info)
 {
-  make_visible (win_info, 0);
+  make_visible (win_info, false);
+}
+
+/* See tui-data.h.  */
+
+void
+tui_win_info::make_visible (bool visible)
+{
+  ::make_visible (&generic, visible);
 }
 
+/* See tui-data.h.  */
 
-/* Makes all windows invisible (except the command and locator windows).   */
+void
+tui_source_window_base::make_visible (bool visible)
+{
+  ::make_visible (execution_info, visible);
+  tui_win_info::make_visible (visible);
+}
+
+/* Makes all windows invisible (except the command and locator
+   windows).  */
 static void
-make_all_visible (int visible)
+make_all_visible (bool visible)
 {
   int i;
 
   for (i = 0; i < MAX_MAJOR_WINDOWS; i++)
     {
-      if (tui_win_list[i] != NULL
-         && ((tui_win_list[i])->generic.type) != CMD_WIN)
-       {
-         if (tui_win_is_source_type ((tui_win_list[i])->generic.type))
-           make_visible ((tui_win_list[i])->detail.source_info.execution_info,
-                         visible);
-         make_visible ((struct tui_gen_win_info *) tui_win_list[i], visible);
-       }
+      if (tui_win_list[i] != NULL)
+       tui_win_list[i]->make_visible (visible);
     }
 
   return;
@@ -233,35 +247,46 @@ make_all_visible (int visible)
 void
 tui_make_all_visible (void)
 {
-  make_all_visible (1);
+  make_all_visible (true);
 }
 
 void
 tui_make_all_invisible (void)
 {
-  make_all_visible (0);
+  make_all_visible (false);
+}
+
+/* See tui-data.h.  */
+
+void
+tui_win_info::refresh ()
+{
+  touchwin (generic.handle);
+  tui_refresh_win (&generic);
+}
+
+/* See tui-data.h.  */
+
+void
+tui_source_window_base::refresh ()
+{
+  touchwin (execution_info->handle);
+  tui_refresh_win (execution_info);
+  tui_win_info::refresh ();
 }
 
 /* Function to refresh all the windows currently displayed.  */
 
 void
-tui_refresh_all (struct tui_win_info * * list)
+tui_refresh_all (struct tui_win_info **list)
 {
-  enum tui_win_type type;
-  struct tui_gen_win_info * locator = tui_locator_win_info_ptr ();
+  int type;
+  struct tui_gen_win_info *locator = tui_locator_win_info_ptr ();
 
   for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++)
     {
       if (list[type] && list[type]->generic.is_visible)
-       {
-         if (type == SRC_WIN || type == DISASSEM_WIN)
-           {
-             touchwin (list[type]->detail.source_info.execution_info->handle);
-             tui_refresh_win (list[type]->detail.source_info.execution_info);
-           }
-         touchwin (list[type]->generic.handle);
-         tui_refresh_win (&list[type]->generic);
-       }
+       list[type]->refresh ();
     }
   if (locator->is_visible)
     {
This page took 0.027671 seconds and 4 git commands to generate.