Simplify source window clearing

When a TUI source window is empty, it displays a "No Source Available"
message.  The function tui_set_source_content_nil also made sure to
put this message into the window's "content" field.

However, I believe this isn't really necessary.  Instead, it's simpler
to just empty the contents and let curses handle the refreshing.

gdb/ChangeLog
2019-07-17  Tom Tromey  <tom@tromey.com>

	* tui/tui-winsource.c (tui_erase_source_content): Clear the
	window's contents.
	* tui/tui-source.h (tui_set_source_content_nil): Don't declare.
	* tui/tui-source.c (tui_set_source_content_nil): Remove.
This commit is contained in:
Tom Tromey 2019-06-28 22:55:45 -06:00
parent d1b6f1e5eb
commit f31ec9af48
4 changed files with 8 additions and 73 deletions

View File

@ -1,3 +1,10 @@
2019-07-17 Tom Tromey <tom@tromey.com>
* tui/tui-winsource.c (tui_erase_source_content): Clear the
window's contents.
* tui/tui-source.h (tui_set_source_content_nil): Don't declare.
* tui/tui-source.c (tui_set_source_content_nil): Remove.
2019-07-17 Tom Tromey <tom@tromey.com>
* tui/tui-data.h (UNDEFINED_ITEM): Remove define.

View File

@ -209,69 +209,6 @@ tui_set_source_content (tui_source_window_base *win_info,
}
/* elz: This function sets the contents of the source window to empty
except for a line in the middle with a warning message about the
source not being available. This function is called by
tui_erase_source_contents(), which in turn is invoked when the
source files cannot be accessed. */
void
tui_set_source_content_nil (struct tui_source_window_base *win_info,
const char *warning_string)
{
int line_width;
int n_lines;
int curr_line = 0;
line_width = win_info->width - 1;
n_lines = win_info->height - 2;
/* Set to empty each line in the window, except for the one which
contains the message. */
while (curr_line < win_info->content.size ())
{
/* Set the information related to each displayed line to null:
i.e. the line number is 0, there is no bp, it is not where
the program is stopped. */
struct tui_source_element *element = &win_info->content[curr_line];
element->line_or_addr.loa = LOA_LINE;
element->line_or_addr.u.line_no = 0;
element->is_exec_point = false;
element->break_mode = 0;
/* Set the contents of the line to blank. */
element->line[0] = (char) 0;
/* If the current line is in the middle of the screen, then we
want to display the 'no source available' message in it.
Note: the 'weird' arithmetic with the line width and height
comes from the function tui_erase_source_content(). We need
to keep the screen and the window's actual contents in
synch. */
if (curr_line == (n_lines / 2 + 1))
{
int xpos;
int warning_length = strlen (warning_string);
char *src_line;
if (warning_length >= ((line_width - 1) / 2))
xpos = 1;
else
xpos = (line_width - 1) / 2 - warning_length;
src_line = xstrprintf ("%s%s", n_spaces (xpos), warning_string);
xfree (element->line);
element->line = src_line;
}
curr_line++;
}
}
/* Function to display source in the source window. This function
initializes the horizontal scroll to 0. */
void

View File

@ -27,9 +27,6 @@
struct symtab;
struct tui_win_info;
extern void tui_set_source_content_nil (struct tui_source_window_base *,
const char *);
extern enum tui_status tui_set_source_content (tui_source_window_base *,
struct symtab *,
int, int);

View File

@ -250,13 +250,7 @@ tui_erase_source_content (struct tui_source_window_base *win_info)
x_pos,
(char *) no_src_str);
/* elz: Added this function call to set the real contents of
the window to what is on the screen, so that later calls
to refresh, do display the correct stuff, and not the old
image. */
tui_set_source_content_nil (win_info, no_src_str);
win_info->content.clear ();
win_info->refresh_window ();
}
}