Update TUI window title when changed

I wrote a TUI window in Python, and I noticed that setting its title
did not result in a refresh, so the new title did not appear.  This
patch corrects this problem.
This commit is contained in:
Tom Tromey
2023-06-29 11:26:55 -06:00
parent 405a9dd064
commit 9fe01a376b
5 changed files with 25 additions and 1 deletions

View File

@@ -531,7 +531,7 @@ gdbpy_tui_set_title (PyObject *self, PyObject *newvalue, void *closure)
if (value == nullptr)
return -1;
win->window->title = value.get ();
win->window->set_title (value.get ());
return 0;
}

View File

@@ -54,6 +54,10 @@ Term::check_contents "error message after trying to delete title" \
Term::check_contents "title is unchanged" \
"This Is The Title"
Term::command "python change_window_title ()"
Term::check_contents "test new title" \
"New Title"
Term::resize 51 51
# Remember that a resize request actually does two resizes...
Term::check_contents "Window was updated" "Test: 2"

View File

@@ -53,4 +53,9 @@ def failwin(win):
raise RuntimeError("Whoops")
# Change the title of the window.
def change_window_title():
the_window.win.title = "New Title"
gdb.register_window_type("fail", failwin)

View File

@@ -152,6 +152,17 @@ tui_prev_win (struct tui_win_info *cur_win)
return *iter;
}
/* See tui-data.h. */
void
tui_win_info::set_title (const char *new_title)
{
if (title != new_title)
{
title = new_title;
check_and_display_highlight_if_needed ();
}
}
void
tui_win_info::rerender ()

View File

@@ -146,6 +146,10 @@ public:
void check_and_display_highlight_if_needed ();
/* A helper function to change the title and then redraw the
surrounding box, if needed. */
void set_title (const char *new_title);
/* Window handle. */
std::unique_ptr<WINDOW, curses_deleter> handle;
/* Window width. */