aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorHannes Domani <ssbssa@yahoo.de>2020-11-22 16:51:30 +0100
committerHannes Domani <ssbssa@yahoo.de>2021-05-27 20:42:42 +0200
commitbdef5723041368f3e264ac641360950c936b7ce4 (patch)
tree4fc4cc2d4b9acad73aed736b358a1c350b027fd4 /gdb/python
parentd5a6313e1c4c748a7e744514dbabfa001636f09a (diff)
downloadgdb-bdef5723041368f3e264ac641360950c936b7ce4.zip
gdb-bdef5723041368f3e264ac641360950c936b7ce4.tar.gz
gdb-bdef5723041368f3e264ac641360950c936b7ce4.tar.bz2
Add optional full_window argument to TuiWindow.write
To prevent flickering when first calling erase, then write, this new argument indicates that the passed string contains the full contents of the window. This fills every unused cell of the window with a space, so it's not necessary to call erase beforehand. gdb/ChangeLog: 2021-05-27 Hannes Domani <ssbssa@yahoo.de> * python/py-tui.c (tui_py_window::output): Add full_window argument. (gdbpy_tui_write): Parse "full_window" argument. gdb/doc/ChangeLog: 2021-05-27 Hannes Domani <ssbssa@yahoo.de> * python.texi (TUI Windows In Python): Document "full_window" argument.
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/py-tui.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c
index 22f4b0f..97e9de7 100644
--- a/gdb/python/py-tui.c
+++ b/gdb/python/py-tui.c
@@ -111,8 +111,9 @@ public:
}
}
- /* Write STR to the window. */
- void output (const char *str);
+ /* Write STR to the window. FULL_WINDOW is true to erase the window
+ contents beforehand. */
+ void output (const char *str, bool full_window);
/* A helper function to compute the viewport width. */
int viewport_width () const
@@ -229,12 +230,18 @@ tui_py_window::do_scroll_vertical (int num_to_scroll)
}
void
-tui_py_window::output (const char *text)
+tui_py_window::output (const char *text, bool full_window)
{
if (m_inner_window != nullptr)
{
+ if (full_window)
+ werase (m_inner_window.get ());
+
tui_puts (text, m_inner_window.get ());
- tui_wrefresh (m_inner_window.get ());
+ if (full_window)
+ check_and_display_highlight_if_needed ();
+ else
+ tui_wrefresh (m_inner_window.get ());
}
}
@@ -405,13 +412,14 @@ gdbpy_tui_write (PyObject *self, PyObject *args)
{
gdbpy_tui_window *win = (gdbpy_tui_window *) self;
const char *text;
+ int full_window = 0;
- if (!PyArg_ParseTuple (args, "s", &text))
+ if (!PyArg_ParseTuple (args, "s|i", &text, &full_window))
return nullptr;
REQUIRE_WINDOW (win);
- win->window->output (text);
+ win->window->output (text, full_window);
Py_RETURN_NONE;
}