aboutsummaryrefslogtreecommitdiff
path: root/gdb/tui
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/tui')
-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
4 files changed, 22 insertions, 36 deletions
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);
}