public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] gdb/tui: relax restrictions on window max height and width
@ 2022-04-03 14:43 Andrew Burgess
  0 siblings, 0 replies; only message in thread
From: Andrew Burgess @ 2022-04-03 14:43 UTC (permalink / raw)
  To: gdb-cvs

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

commit b45b7407cdd07900ecc28a36710603edc96ade71
Author: Andrew Burgess <aburgess@redhat.com>
Date:   Tue Feb 1 14:09:26 2022 +0000

    gdb/tui: relax restrictions on window max height and width
    
    This commit removes some arbitrary adjustments made in
    tui_cmd_window::max_height, tui_win_info::max_height, and
    tui_win_info::max_width.
    
    These member functions all subtract some constant from the theoretical
    maximum height or width.  I've looked back through the history a
    little and can see no real reason why these adjustments should be
    needed, with these adjustments removed all the existing tui tests
    still pass.
    
    However, retaining these restrictions causes some bugs, consider:
    
      (gdb) tui new-layout hsrc {-horizontal src 1 cmd 1} 1
    
    When this layout is selected with current master, gdb will leave a 4
    line gap at the bottom of the terminal.
    
    The problem is that the maximum height is restricted, for the cmd
    window, to 4 less than the terminal height.
    
    By removing this restriction gdb is able to size the windows to the
    complete terminal height, and the layout is done correctly.
    
    This 4 line restriction is also what prevents this layout from working
    correctly:
    
      (gdb) tui new-layout conly cmd 1
    
    Previously, this layout would present a cmd window only, but there
    would be a 4 line gap at the bottom of the terminal.  This issue was
    mentioned in an earlier commit in this series (when a different bug
    was fixed), but with this commit, the above layout now correctly fills
    the terminal.  The associated test is updated.
    
    After removing the adjustment in tui_cmd_window::max_height, the
    implementation is now the same as the implementation in the parent
    class tui_win_info, so I've completely removed the max_height call
    from tui_cmd_window.

Diff:
---
 gdb/testsuite/gdb.tui/new-layout.exp | 4 +++-
 gdb/tui/tui-command.c                | 6 ------
 gdb/tui/tui-command.h                | 2 --
 gdb/tui/tui-win.c                    | 4 ++--
 4 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/gdb/testsuite/gdb.tui/new-layout.exp b/gdb/testsuite/gdb.tui/new-layout.exp
index 883c7601be7..e662b1f0b18 100644
--- a/gdb/testsuite/gdb.tui/new-layout.exp
+++ b/gdb/testsuite/gdb.tui/new-layout.exp
@@ -76,6 +76,8 @@ set layouts \
 	      "21.*return 0.*$hex <main>"] \
 	 [list example4 "src 1 status 0 {-horizontal cmd 1 regs 1} 1" \
 	      {{0 0 80 11} {40 12 40 12}} ""] \
+	 [list example5 "{-horizontal src 1 cmd 1} 1 status 0" \
+	      {{0 0 40 23}} ""] \
 	 [list cmd_only "cmd 1" {} ""]]
 
 # Helper function to verify a list of boxes.
@@ -136,7 +138,7 @@ foreach_with_prefix layout $layouts {
 	Term::check_region_contents "info win output" \
 	    0 0 80 24 [multi_line "info win\\s+" \
 			   "Name\\s+Lines\\s+Columns\\s+Focus\\s+" \
-			   "cmd\\s+20\\s+80\\s+\\(has focus\\)\\s+" \
+			   "cmd\\s+24\\s+80\\s+\\(has focus\\)\\s+" \
 			   "$gdb_prompt\\s+"]
     }
 }
diff --git a/gdb/tui/tui-command.c b/gdb/tui/tui-command.c
index fa8af970b0a..0f6c395f567 100644
--- a/gdb/tui/tui-command.c
+++ b/gdb/tui/tui-command.c
@@ -31,12 +31,6 @@
 
 /* See tui-command.h.  */
 
-int
-tui_cmd_window::max_height () const
-{
-  return tui_term_height () - 4;
-}
-
 void
 tui_cmd_window::resize (int height_, int width_, int origin_x, int origin_y)
 {
diff --git a/gdb/tui/tui-command.h b/gdb/tui/tui-command.h
index 06cc24f6faf..6c354361d1d 100644
--- a/gdb/tui/tui-command.h
+++ b/gdb/tui/tui-command.h
@@ -31,8 +31,6 @@ struct tui_cmd_window : public tui_win_info
 
   DISABLE_COPY_AND_ASSIGN (tui_cmd_window);
 
-  int max_height () const override;
-
   void refresh_window () override
   {
   }
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index 2ec618093b0..31b6606636a 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -955,7 +955,7 @@ tui_set_win_width_command (const char *arg, int from_tty)
 int
 tui_win_info::max_height () const
 {
-  return tui_term_height () - 2;
+  return tui_term_height ();
 }
 
 /* See tui-data.h.  */
@@ -963,7 +963,7 @@ tui_win_info::max_height () const
 int
 tui_win_info::max_width () const
 {
-  return tui_term_width () - 2;
+  return tui_term_width ();
 }
 
 static void


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-04-03 14:43 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-03 14:43 [binutils-gdb] gdb/tui: relax restrictions on window max height and width Andrew Burgess

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).