public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Fix a pair of screen-resizing issues in TUI
@ 2015-01-10  3:49 Patrick Palka
  2015-01-10  3:49 ` [PATCH] Fix truncation of TUI command history Patrick Palka
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Patrick Palka @ 2015-01-10  3:49 UTC (permalink / raw)
  To: gdb-patches; +Cc: Patrick Palka

This patch fixes a pair of TUI issues related to screen resizing:

1. In tui_handle_resize_during_io(), when the TUI screen gets resized,
we fail to update GDB's idea about the height of the output window.

You can see this bug by doing:

  a. Enter TUI mode.
  b. "show height"
  c. Resize the terminal.
  d. "show height"

And observe that despite resizing the terminal, the reported height
remains unchanged.  Note that a similar issue exists in the CLI.

The fix for this is simple: call tui_update_gdb_sizes() after performing
a resize, so that the "height" variable remains consistent with the
height of TUI's output window.

2. In tui_enable(), the call to tui_update_gdb_sizes() may clobber
readline's idea of the actual screen dimensions, and a subsequent
pending resize will use bogus terminal dimensions.

You can see this bug by doing:

  a. Enter TUI mode.
  b. Exit TUI mode.
  c. Resize the terminal.
  d. Enter TUI mode.
  e. Press a key to resize the screen.

And observe that the terminal gets incorrectly resized to the wrong
dimensions.  To fix this issue, we should oppurtunistically resize the
screen in tui_enable().  That way we eliminate the possibility of a
pending resize triggering right after we call tui_update_gdb_sizes().

gdb/ChangeLog:

	* tui/tui-io.c (tui_handle_resize_during_io): Call
	tui_update_gdb_sizes() after resizing the screen.
	* tui/tui.c (tui_enable): Resize the terminal before
	calling tui_update_gdb_sizes().
---
 gdb/tui/tui-io.c | 1 +
 gdb/tui/tui.c    | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c
index 94c3ec2..fccada5 100644
--- a/gdb/tui/tui-io.c
+++ b/gdb/tui/tui-io.c
@@ -767,6 +767,7 @@ tui_handle_resize_during_io (void)
     {
       tui_resize_all ();
       tui_refresh_all_win ();
+      tui_update_gdb_sizes ();
       tui_set_win_resized_to (FALSE);
     }
 }
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index 00e505d..53eb6d2 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -483,6 +483,13 @@ tui_enable (void)
 
   /* Restore TUI keymap.  */
   tui_set_key_mode (tui_current_key_mode);
+
+  /* Resize and refresh the screen.  */
+  if (tui_win_resized ())
+    {
+      tui_resize_all ();
+      tui_set_win_resized_to (FALSE);
+    }
   tui_refresh_all_win ();
 
   /* Update gdb's knowledge of its terminal.  */
-- 
2.2.1.212.gc5b9256

^ permalink raw reply	[flat|nested] 13+ messages in thread
* [PATCH] Fix truncation of TUI command history
@ 2014-08-30 18:11 Patrick Palka
  2014-09-04  9:44 ` Pedro Alves
  0 siblings, 1 reply; 13+ messages in thread
From: Patrick Palka @ 2014-08-30 18:11 UTC (permalink / raw)
  To: gdb-patches; +Cc: Patrick Palka

If we submit a command while the prompt cursor is somewhere other than
at the end of the command line, the command line gets truncated as the
command window gets shifted one line up.  This happens because we fail
to properly move the cursor to the end of the command line before
transmitting the newline to ncurses.  We need to move the cursor because
when ncurses outputs a newline it truncates any text that appears
past the end of the cursor.

	* tui/tui-io.c (tui_getc): Move cursor to the end of the command
	line before printing a newline.
---
 gdb/tui/tui-io.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c
index aa14790..eee5f1ac6 100644
--- a/gdb/tui/tui-io.c
+++ b/gdb/tui/tui-io.c
@@ -678,8 +678,9 @@ tui_getc (FILE *fp)
         }
       else
         {
+          /* Move cursor to the end of the command line.  */
           wmove (w, TUI_CMD_WIN->detail.command_info.cur_line,
-                 TUI_CMD_WIN->detail.command_info.curch);
+		 strlen (tui_rl_saved_prompt) + rl_end);
           waddch (w, ch);
         }
     }
-- 
2.1.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2015-02-10 17:30 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-10  3:49 [PATCH] Fix a pair of screen-resizing issues in TUI Patrick Palka
2015-01-10  3:49 ` [PATCH] Fix truncation of TUI command history Patrick Palka
2015-01-10  3:59   ` Patrick Palka
2015-01-27  2:13   ` Patrick Palka
2015-02-04 14:50     ` Patrick Palka
2015-02-10 17:30   ` Pedro Alves
2015-01-10  3:56 ` [PATCH] Fix a pair of screen-resizing issues in TUI Patrick Palka
2015-01-26 21:55 ` Patrick Palka
2015-02-04 14:49   ` Patrick Palka
2015-02-10 17:27 ` Pedro Alves
  -- strict thread matches above, loose matches on Subject: below --
2014-08-30 18:11 [PATCH] Fix truncation of TUI command history Patrick Palka
2014-09-04  9:44 ` Pedro Alves
2014-09-04 12:17   ` Patrick Palka

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