aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/gdb.tui/regs.exp5
-rw-r--r--gdb/tui/tui-data.c20
-rw-r--r--gdb/tui/tui-data.h6
-rw-r--r--gdb/tui/tui-regs.c12
-rw-r--r--gdb/tui/tui-winsource.c20
5 files changed, 26 insertions, 37 deletions
diff --git a/gdb/testsuite/gdb.tui/regs.exp b/gdb/testsuite/gdb.tui/regs.exp
index ea78b57..183c2ea 100644
--- a/gdb/testsuite/gdb.tui/regs.exp
+++ b/gdb/testsuite/gdb.tui/regs.exp
@@ -46,7 +46,10 @@ Term::check_box "source box in regs layout" 0 7 80 8
# The current frame is main, check that registers are available.
set re_reg_vals_unavailable \
- [string_to_regexp {[ Register Values Unavailable ]}]
+ [string_to_regexp \
+ [string cat \
+ [string repeat " " 23] \
+ {[ Register Values Unavailable ]}]]
gdb_assert \
{ ![Term::check_region_contents_p 0 0 80 8 $re_reg_vals_unavailable] } \
"Register values available"
diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c
index 38a87a2..03395d2 100644
--- a/gdb/tui/tui-data.c
+++ b/gdb/tui/tui-data.c
@@ -169,13 +169,23 @@ tui_win_info::set_title (std::string &&new_title)
/* See tui-data.h. */
void
-tui_win_info::display_string (int y, int x, const char *str) const
+tui_win_info::center_string (const char *str)
{
- int n = width - box_width () - x;
- if (n <= 0)
- return;
+ werase (handle.get ());
+ check_and_display_highlight_if_needed ();
+
+ int avail_width = width - box_size ();
+ int len = strlen (str);
+
+ int x_pos = box_width ();
+ if (len < avail_width)
+ x_pos += (avail_width - len) / 2;
+
+ int n = avail_width - x_pos;
+ gdb_assert (n > 0);
- mvwaddnstr (handle.get (), y, x, str, n);
+ mvwaddnstr (handle.get (), height / 2, x_pos, str, n);
+ refresh_window ();
}
/* See tui-data.h. */
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index 90ab01f..ce9c1a8 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -167,9 +167,9 @@ public:
const std::string &title () const
{ return m_title; }
- /* Display string STR in the window at position (Y,X), abbreviated if
- necessary. */
- void display_string (int y, int x, const char *str) const;
+ /* Clear the window, maybe draw the boarder, and then display string
+ STR centered in the window, abbreviated if necessary. */
+ void center_string (const char *str);
/* Display string STR in the window at the current cursor position,
abbreviated if necessary. */
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index e7c1839..05211eb 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -354,17 +354,7 @@ tui_data_window::first_data_item_displayed ()
void
tui_data_window::erase_data_content ()
{
- werase (handle.get ());
- check_and_display_highlight_if_needed ();
-
- const char *prompt = _("[ Register Values Unavailable ]");
- int half_width = (width - box_size ()) / 2;
- int x_pos;
- if (strlen (prompt) >= half_width)
- x_pos = 1;
- else
- x_pos = half_width - strlen (prompt);
- display_string (height / 2, x_pos, prompt);
+ center_string (_("[ Register Values Unavailable ]"));
}
/* See tui-regs.h. */
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index 2631714..6b8716c 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -222,23 +222,9 @@ tui_update_source_windows_with_line (struct symtab_and_line sal)
void
tui_source_window_base::do_erase_source_content (const char *str)
{
- int x_pos;
- int half_width = (width - box_size ()) / 2;
-
m_content.clear ();
- if (handle != NULL)
- {
- werase (handle.get ());
- check_and_display_highlight_if_needed ();
-
- if (strlen (str) >= half_width)
- x_pos = 1;
- else
- x_pos = half_width - strlen (str);
- display_string (height / 2, x_pos, str);
-
- refresh_window ();
- }
+ if (handle != nullptr)
+ center_string (str);
}
/* See tui-winsource.h. */
@@ -714,7 +700,7 @@ tui_source_window_base::update_exec_info (bool refresh_p)
if (src_element->is_exec_point)
element[TUI_EXEC_POS] = '>';
- display_string (i + box_width (), box_width (), element);
+ mvwaddstr (handle.get (), i + box_width (), box_width (), element);
show_line_number (i);
}