[30/61] Simplify source window clearing
Commit Message
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.
2019-07-04 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.
---
gdb/ChangeLog | 7 +++++
gdb/tui/tui-source.c | 63 -----------------------------------------
gdb/tui/tui-source.h | 3 --
gdb/tui/tui-winsource.c | 8 +-----
4 files changed, 8 insertions(+), 73 deletions(-)
@@ -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
@@ -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);
@@ -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 ();
}
}