From 9e820dec13ec153f5843a30afe6d1c5037405278 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sun, 27 Sep 2020 20:30:30 -0600 Subject: Use a curses pad for source and disassembly windows This changes the TUI source and disassembly windows to use a curses pad for their text. This is an important step toward properly handling non-ASCII characters, because it makes it easy to scroll horizontally without needing gdb to also understand multi-byte character boundaries -- this can be wholly delegated to curses. Horizontal scrolling is probably also faster now, because no re-rendering is required. gdb/ChangeLog 2020-09-27 Tom Tromey * unittests/tui-selftests.c: Update. * tui/tui-winsource.h (struct tui_source_window_base) : New methods. : New members. (tui_copy_source_line): Update. * tui/tui-winsource.c (tui_copy_source_line): Remove line_no, first_col, line_width, ndigits parameters. Add length. (tui_source_window_base::show_source_line): Write to pad. Line number now 0-based. (tui_source_window_base::refresh_pad): New method. (tui_source_window_base::show_source_content): Write to pad. Call refresh_pad. (tui_source_window_base::do_scroll_horizontal): Call refresh_pad, not refill. (tui_source_window_base::update_exec_info): Call show_line_number. * tui/tui-source.h (struct tui_source_window) : New method. : New member. * tui/tui-source.c (tui_source_window::set_contents): Set m_digits and m_max_length. (tui_source_window::show_line_number): New method. * tui/tui-io.h (tui_puts): Fix comment. * tui/tui-disasm.c (tui_disasm_window::set_contents): Set m_max_length. --- gdb/unittests/tui-selftests.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gdb/unittests') diff --git a/gdb/unittests/tui-selftests.c b/gdb/unittests/tui-selftests.c index 6144e23..7ab2a63 100644 --- a/gdb/unittests/tui-selftests.c +++ b/gdb/unittests/tui-selftests.c @@ -31,13 +31,13 @@ static void run_tests () { const char *text = "hello"; - std::string result = tui_copy_source_line (&text, 0, 0, 50, 0); + std::string result = tui_copy_source_line (&text); SELF_CHECK (result == "hello"); SELF_CHECK (*text == '\0'); text = "hello\n"; - result = tui_copy_source_line (&text, 0, 0, 3, 0); - SELF_CHECK (result == "hel"); + result = tui_copy_source_line (&text); + SELF_CHECK (result == "hello"); SELF_CHECK (*text == '\0'); } -- cgit v1.1