diff options
author | Tom Tromey <tom@tromey.com> | 2023-06-29 11:26:55 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2023-07-10 13:48:22 -0600 |
commit | 9fe01a376b2fb096e4836e985ba316ce9dc02399 (patch) | |
tree | 976b08d7db993188a946eabae9ea13a4d5a4eb50 | |
parent | 405a9dd06417a9272442b8818a867f6c008b7a48 (diff) | |
download | gdb-9fe01a376b2fb096e4836e985ba316ce9dc02399.zip gdb-9fe01a376b2fb096e4836e985ba316ce9dc02399.tar.gz gdb-9fe01a376b2fb096e4836e985ba316ce9dc02399.tar.bz2 |
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.
-rw-r--r-- | gdb/python/py-tui.c | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/tui-window.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/tui-window.py | 5 | ||||
-rw-r--r-- | gdb/tui/tui-data.c | 11 | ||||
-rw-r--r-- | gdb/tui/tui-data.h | 4 |
5 files changed, 25 insertions, 1 deletions
diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c index 84a435e..c52b04f 100644 --- a/gdb/python/py-tui.c +++ b/gdb/python/py-tui.c @@ -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; } diff --git a/gdb/testsuite/gdb.python/tui-window.exp b/gdb/testsuite/gdb.python/tui-window.exp index 9b5d17c..defc8c6 100644 --- a/gdb/testsuite/gdb.python/tui-window.exp +++ b/gdb/testsuite/gdb.python/tui-window.exp @@ -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" diff --git a/gdb/testsuite/gdb.python/tui-window.py b/gdb/testsuite/gdb.python/tui-window.py index 401cb51..dc72cc4 100644 --- a/gdb/testsuite/gdb.python/tui-window.py +++ b/gdb/testsuite/gdb.python/tui-window.py @@ -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) diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c index 0daed32..abd2ec2 100644 --- a/gdb/tui/tui-data.c +++ b/gdb/tui/tui-data.c @@ -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 () diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h index c92e85c..030ce2a 100644 --- a/gdb/tui/tui-data.h +++ b/gdb/tui/tui-data.h @@ -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. */ |