public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
From: Andrew Burgess <aburgess@sourceware.org>
To: gdb-cvs@sourceware.org
Subject: [binutils-gdb] gdb/tui: add left_boxed_p and right_boxed_p member functions
Date: Sun,  3 Apr 2022 14:43:13 +0000 (GMT)	[thread overview]
Message-ID: <20220403144313.A40BB3858418@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=44aad371013c6275bae2ee580d26b0d44de2b228

commit 44aad371013c6275bae2ee580d26b0d44de2b228
Author: Andrew Burgess <aburgess@redhat.com>
Date:   Mon Jan 31 12:13:38 2022 +0000

    gdb/tui: add left_boxed_p and right_boxed_p member functions
    
    When I initially saw this code in tui_layout_split::apply, I assumed
    that this must be a bug:
    
        /* Two adjacent boxed windows will share a border, making a bit
           more size available.  */
        if (i > 0
            && m_splits[i - 1].layout->bottom_boxed_p ()
            && m_splits[i].layout->top_boxed_p ())
          ...
    
    After all, the apply might be laying out a horizontal layout, right?
    So checking bottom_boxed_p and top_boxed_p is clearly wrong.
    
    Well, it turns on, that due to the implementations of these things,
    bottom_boxed_p is equivalent to an imagined right_boxed_p, and
    top_boxed_p is equivalent to an imagined left_boxed_p.
    
    In this commit I've renamed both top_boxed_p and bottom_boxed_p to
    first_edge_has_border_p and last_edge_has_border_p respectively, and
    extended the comments in tui_layout_base to mention that these methods
    handle both horizontal and vertical layouts.
    
    Now, hopefully, the code shouldn't look like it only applies for
    vertical layouts.
    
    There should be no user visible changes after this commit.

Diff:
---
 gdb/tui/tui-layout.c | 16 ++++++++--------
 gdb/tui/tui-layout.h | 18 ++++++++++--------
 2 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 6fd176d9235..c890b86b026 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -451,7 +451,7 @@ tui_layout_window::get_sizes (bool height, int *min_value, int *max_value)
 /* See tui-layout.h.  */
 
 bool
-tui_layout_window::top_boxed_p () const
+tui_layout_window::first_edge_has_border_p () const
 {
   gdb_assert (m_window != nullptr);
   return m_window->can_box ();
@@ -460,7 +460,7 @@ tui_layout_window::top_boxed_p () const
 /* See tui-layout.h.  */
 
 bool
-tui_layout_window::bottom_boxed_p () const
+tui_layout_window::last_edge_has_border_p () const
 {
   gdb_assert (m_window != nullptr);
   return m_window->can_box ();
@@ -561,21 +561,21 @@ tui_layout_split::get_sizes (bool height, int *min_value, int *max_value)
 /* See tui-layout.h.  */
 
 bool
-tui_layout_split::top_boxed_p () const
+tui_layout_split::first_edge_has_border_p () const
 {
   if (m_splits.empty ())
     return false;
-  return m_splits[0].layout->top_boxed_p ();
+  return m_splits[0].layout->first_edge_has_border_p ();
 }
 
 /* See tui-layout.h.  */
 
 bool
-tui_layout_split::bottom_boxed_p () const
+tui_layout_split::last_edge_has_border_p () const
 {
   if (m_splits.empty ())
     return false;
-  return m_splits.back ().layout->top_boxed_p ();
+  return m_splits.back ().layout->last_edge_has_border_p ();
 }
 
 /* See tui-layout.h.  */
@@ -785,8 +785,8 @@ tui_layout_split::apply (int x_, int y_, int width_, int height_)
       /* Two adjacent boxed windows will share a border, making a bit
 	 more size available.  */
       if (i > 0
-	  && m_splits[i - 1].layout->bottom_boxed_p ()
-	  && m_splits[i].layout->top_boxed_p ())
+	  && m_splits[i - 1].layout->last_edge_has_border_p ()
+	  && m_splits[i].layout->first_edge_has_border_p ())
 	info[i].share_box = true;
     }
 
diff --git a/gdb/tui/tui-layout.h b/gdb/tui/tui-layout.h
index 26de3c3a979..9cfcfb8e81f 100644
--- a/gdb/tui/tui-layout.h
+++ b/gdb/tui/tui-layout.h
@@ -62,11 +62,13 @@ public:
      HEIGHT is true to fetch height, false to fetch width.  */
   virtual void get_sizes (bool height, int *min_value, int *max_value) = 0;
 
-  /* True if the topmost item in this layout is boxed.  */
-  virtual bool top_boxed_p () const = 0;
+  /* True if the topmost (for vertical layouts), or the leftmost (for
+     horizontal layouts) item in this layout is boxed.  */
+  virtual bool first_edge_has_border_p () const = 0;
 
-  /* True if the bottommost item in this layout is boxed.  */
-  virtual bool bottom_boxed_p () const = 0;
+  /* True if the bottommost (for vertical layouts), or the rightmost (for
+     horizontal layouts) item in this layout is boxed.  */
+  virtual bool last_edge_has_border_p () const = 0;
 
   /* Return the name of this layout's window, or nullptr if this
      layout does not represent a single window.  */
@@ -141,9 +143,9 @@ public:
     return m_contents == name ? FOUND : NOT_FOUND;
   }
 
-  bool top_boxed_p () const override;
+  bool first_edge_has_border_p () const override;
 
-  bool bottom_boxed_p () const override;
+  bool last_edge_has_border_p () const override;
 
   void remove_windows (const char *name) override
   {
@@ -213,9 +215,9 @@ public:
     return set_size (name, new_width, true);
   }
 
-  bool top_boxed_p () const override;
+  bool first_edge_has_border_p () const override;
 
-  bool bottom_boxed_p () const override;
+  bool last_edge_has_border_p () const override;
 
   void remove_windows (const char *name) override;


                 reply	other threads:[~2022-04-03 14:43 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220403144313.A40BB3858418@sourceware.org \
    --to=aburgess@sourceware.org \
    --cc=gdb-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).