and refresh the window. */
void
tui_data_window::show_registers (const reggroup *group)
+{
+ update_register_data (group);
+ rerender ();
+}
+
+/* Set the data window to display the registers of the register group
+ using the given frame. */
+
+void
+tui_data_window::update_register_data (const reggroup *group)
{
if (group == nullptr)
group = general_reggroup;
- if (target_has_registers () && target_has_stack () && target_has_memory ())
- update_register_data (group, get_selected_frame (nullptr));
- else
+ if (!target_has_registers ()
+ || !target_has_stack ()
+ || !target_has_memory ())
{
set_title (_("Registers"));
m_current_group = nullptr;
m_regs_content.clear ();
+ return;
}
- rerender (false);
-}
-
+ frame_info_ptr frame = get_selected_frame (nullptr);
-/* Set the data window to display the registers of the register group
- using the given frame. */
-
-void
-tui_data_window::update_register_data (const reggroup *group,
- frame_info_ptr frame)
-{
m_current_group = group;
/* Make a new title showing which group we display. */
void
tui_data_window::display_registers_from (int start_element_no)
{
+ werase (handle.get ());
+ check_and_display_highlight_if_needed ();
+
/* In case the regs window is not boxed, we'll write the last char in the
last line here, causing a scroll, so prevent that. */
scrollok (handle.get (), FALSE);
x_pos = half_width - strlen (prompt);
display_string (height / 2, x_pos, prompt);
}
- tui_wrefresh (handle.get ());
}
/* See tui-regs.h. */
void
-tui_data_window::rerender (bool toplevel)
+tui_data_window::rerender ()
{
if (m_regs_content.empty ())
- {
- if (toplevel && has_stack_frames ())
- {
- frame_info_ptr fi = get_selected_frame (NULL);
- check_register_values (fi);
- }
- else
- erase_data_content (_("[ Register Values Unavailable ]"));
- }
+ erase_data_content (_("[ Register Values Unavailable ]"));
else
- {
- erase_data_content (NULL);
- display_registers_from (0);
- }
+ display_registers_from (0);
+ tui_wrefresh (handle.get ());
}
if (first_line >= 0)
{
first_line += num_to_scroll;
- erase_data_content (NULL);
display_registers_from_line (first_line);
}
}
/* The TUI registers window. */
struct tui_data_window : public tui_win_info
{
- tui_data_window () = default;
+ tui_data_window ()
+ {
+ update_register_data (nullptr);
+ }
DISABLE_COPY_AND_ASSIGN (tui_data_window);
{
}
- void rerender (bool toplevel);
- void rerender () override
- {
- rerender (true);
- }
+ void rerender () override;
private:
display off the end of the register display. */
void display_reg_element_at_line (int start_element_no, int start_line_no);
- void update_register_data (const reggroup *group,
- frame_info_ptr frame);
+ void update_register_data (const reggroup *group);
/* Answer the number of the last line in the regs display. If there
are no registers (-1) is returned. */