diff options
-rw-r--r-- | gdb/testsuite/gdb.tui/regs.exp | 5 | ||||
-rw-r--r-- | gdb/tui/tui-data.c | 20 | ||||
-rw-r--r-- | gdb/tui/tui-data.h | 6 | ||||
-rw-r--r-- | gdb/tui/tui-regs.c | 12 | ||||
-rw-r--r-- | gdb/tui/tui-winsource.c | 20 |
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); } |