aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/python.texi6
-rw-r--r--gdb/python/py-tui.c20
4 files changed, 30 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9d06a77..739e773 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+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.
+
2021-05-27 Simon Marchi <simon.marchi@polymtl.ca>
* make-init-c: Add option to reverse function calls.
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 51503a7..2743079 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,5 +1,10 @@
2021-05-27 Hannes Domani <ssbssa@yahoo.de>
+ * python.texi (TUI Windows In Python): Document "full_window"
+ argument.
+
+2021-05-27 Hannes Domani <ssbssa@yahoo.de>
+
* python.texi (Symbols In Python): Document gdb.SYMBOL_LOC_LABEL.
2021-05-25 Hannes Domani <ssbssa@yahoo.de>
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index 9127b96..23e6ac6 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -5959,10 +5959,14 @@ displayed above the window. This attribute can be modified.
Remove all the contents of the window.
@end defun
-@defun TuiWindow.write (@var{string})
+@defun TuiWindow.write (@var{string} @r{[}, @var{full_window}@r{]})
Write @var{string} to the window. @var{string} can contain ANSI
terminal escape styling sequences; @value{GDBN} will translate these
as appropriate for the terminal.
+
+If the @var{full_window} parameter is @code{True}, then @var{string}
+contains the full contents of the window. This is similar to calling
+@code{erase} before @code{write}, but avoids the flickering.
@end defun
The factory function that you supply should return an object
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;
}