Commit 647bb750 authored by Hannes Domani's avatar Hannes Domani Committed by Pedro Alves
Browse files

Fix scrolling right in the TUI

This commit fixes two issues in scrolling right in the TUI:

#1 - Scrolling right with the arrow keys, the first keypress doesn't
do anything.  The problem is that copy_source_line() checks if
(column < first_col), and because of the ++column directly before, it
basically starts with 1 instead of 0.

#2 - Scrolling right handles TABS and escaped characters as single
characters, which just looks weird.  The problem is that there's a
spot that misses handling TABS.

gdb/ChangeLog:
2019-03-18  Hannes Domani  <ssbssa@yahoo.de>

	* tui/tui-source.c (copy_source_line): Fix handling of 'column'.
	Handle tabs.
parent bff8c71f
2019-03-18 Hannes Domani <ssbssa@yahoo.de>
* tui/tui-source.c (copy_source_line): Fix handling of 'column'.
Handle tabs.
2019-03-18 Tom Tromey <tromey@adacore.com>
* ada-lang.c (empty_array): Add "high" parameter.
......
......@@ -71,10 +71,27 @@ copy_source_line (const char **ptr, int line_no, int first_col,
++lineptr;
++column;
auto process_tab = [&] ()
{
int max_tab_len = tui_tab_width;
--column;
for (int j = column % max_tab_len;
j < max_tab_len && column < first_col + line_width;
column++, j++)
if (column >= first_col)
result.push_back (' ');
};
/* We have to process all the text in order to pick up all the
escapes. */
if (column < first_col || column > first_col + line_width)
continue;
if (column <= first_col || column > first_col + line_width)
{
if (c == '\t')
process_tab ();
continue;
}
if (c == '\n' || c == '\r' || c == '\0')
{
......@@ -91,14 +108,7 @@ copy_source_line (const char **ptr, int line_no, int first_col,
result.push_back ('?');
}
else if (c == '\t')
{
int j, max_tab_len = tui_tab_width;
for (j = column - ((column / max_tab_len) * max_tab_len);
j < max_tab_len && column < first_col + line_width;
column++, j++)
result.push_back (' ');
}
process_tab ();
else
result.push_back (c);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment