+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.
+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.
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
}
}
- /* 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
}
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 ());
}
}
{
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;
}