#include "top.h"
#include "source.h"
#include "event-loop.h"
+#include "gdbcmd.h"
#include "tui/tui.h"
#include "tui/tui-io.h"
+#include "tui/tui-command.h"
#include "tui/tui-data.h"
+#include "tui/tui-layout.h"
#include "tui/tui-wingeneral.h"
#include "tui/tui-stack.h"
#include "tui/tui-regs.h"
#include "tui/tui-disasm.h"
#include "tui/tui-source.h"
#include "tui/tui-winsource.h"
-#include "tui/tui-windata.h"
#include "tui/tui-win.h"
#include "gdb_curses.h"
#include <signal.h>
-/*******************************
-** Static Local Decls
-********************************/
-static void make_invisible_and_set_new_height (struct tui_win_info *,
- int);
static enum tui_status tui_adjust_win_heights (struct tui_win_info *,
int);
static int new_height_ok (struct tui_win_info *, int);
static void tui_set_tab_width_command (const char *, int);
static void tui_refresh_all_command (const char *, int);
static void tui_all_windows_info (const char *, int);
-static void tui_set_focus_command (const char *, int);
static void tui_scroll_forward_command (const char *, int);
static void tui_scroll_backward_command (const char *, int);
static void tui_scroll_left_command (const char *, int);
int *);
-/***************************************
-** DEFINITIONS
-***************************************/
#define WIN_HEIGHT_USAGE "Usage: winheight WINDOW-NAME [+ | -] NUM-LINES\n"
#define FOCUS_USAGE "Usage: focus [WINDOW-NAME | next | prev]\n"
-/***************************************
-** PUBLIC FUNCTIONS
-***************************************/
-
#ifndef ACS_LRCORNER
# define ACS_LRCORNER '+'
#endif
tui_rehighlight_all ();
}
+\f
+
+/* True if TUI resizes should print a message. This is used by the
+ test suite. */
+
+static bool resize_message;
+
+static void
+show_tui_resize_message (struct ui_file *file, int from_tty,
+ struct cmd_list_element *c, const char *value)
+{
+ fprintf_filtered (file, _("TUI resize messaging is %s.\n"), value);
+}
+
+\f
+
/* Generic window name completion function. Complete window name pointed
to by TEXT and WORD. If INCLUDE_NEXT_PREV_P is true then the special
window names 'next' and 'prev' will also be considered as possible
const char *completion_name = NULL;
/* We can't focus on an invisible window. */
- if (!win_info->is_visible)
+ if (!win_info->is_visible ())
continue;
completion_name = win_info->name ();
}
-/* See tui-data.h. */
-
-void
-tui_source_window_base::refresh_all ()
-{
- tui_show_source_content (this);
- tui_check_and_display_highlight_if_needed (this);
- tui_erase_exec_info_content (this);
- tui_update_exec_info (this);
-}
-
void
tui_refresh_all_win (void)
{
clearok (curscr, TRUE);
tui_refresh_all ();
- for (tui_win_info *win_info : all_tui_windows ())
- {
- if (win_info->is_visible)
- win_info->refresh_all ();
- }
- tui_show_locator_content ();
}
void
tui_rehighlight_all (void)
{
for (tui_win_info *win_info : all_tui_windows ())
- tui_check_and_display_highlight_if_needed (win_info);
+ win_info->check_and_display_highlight_if_needed ();
}
/* Resize all the windows based on the terminal size. This function
struct tui_win_info *second_win;
tui_source_window_base *src_win;
struct tui_locator_window *locator = tui_locator_win_info_ptr ();
- int win_type;
int new_height, split_diff, cmd_split_diff, num_wins_displayed = 2;
#ifdef HAVE_RESIZE_TERM
#endif
/* Turn keypad off while we resize. */
if (win_with_focus != TUI_CMD_WIN)
- keypad (TUI_CMD_WIN->handle, FALSE);
+ keypad (TUI_CMD_WIN->handle.get (), FALSE);
tui_update_gdb_sizes ();
tui_set_term_height_to (screenheight);
tui_set_term_width_to (screenwidth);
AIX 5.3 does not define clear. */
erase ();
clearok (curscr, TRUE);
- refresh ();
switch (cur_layout)
{
case SRC_COMMAND:
case DISASSEM_COMMAND:
- src_win = tui_source_windows ()[0];
- first_win = src_win;
- first_win->width += width_diff;
- locator->width += width_diff;
+ src_win = *(tui_source_windows ().begin ());
/* Check for invalid heights. */
if (height_diff == 0)
- new_height = first_win->height;
- else if ((first_win->height + split_diff) >=
+ new_height = src_win->height;
+ else if ((src_win->height + split_diff) >=
(screenheight - MIN_CMD_WIN_HEIGHT - 1))
new_height = screenheight - MIN_CMD_WIN_HEIGHT - 1;
- else if ((first_win->height + split_diff) <= 0)
+ else if ((src_win->height + split_diff) <= 0)
new_height = MIN_WIN_HEIGHT;
else
- new_height = first_win->height + split_diff;
+ new_height = src_win->height + split_diff;
+
+ src_win->resize (new_height, screenwidth, 0, 0);
+
+ locator->resize (1, screenwidth, 0, new_height);
- locator->origin.y = new_height + 1;
- make_invisible_and_set_new_height (first_win, new_height);
- TUI_CMD_WIN->origin.y = locator->origin.y + 1;
- TUI_CMD_WIN->width += width_diff;
- new_height = screenheight - TUI_CMD_WIN->origin.y;
- make_invisible_and_set_new_height (TUI_CMD_WIN, new_height);
- first_win->make_visible_with_new_height ();
- TUI_CMD_WIN->make_visible_with_new_height ();
- if (src_win->content.empty ())
- tui_erase_source_content (src_win, EMPTY_SOURCE_PROMPT);
+ new_height = screenheight - (new_height + 1);
+ TUI_CMD_WIN->resize (new_height, screenwidth,
+ 0, locator->origin.y + 1);
break;
default:
if (cur_layout == SRC_DISASSEM_COMMAND)
{
src_win = TUI_SRC_WIN;
first_win = src_win;
- first_win->width += width_diff;
second_win = TUI_DISASM_WIN;
- second_win->width += width_diff;
}
else
{
first_win = TUI_DATA_WIN;
- first_win->width += width_diff;
- src_win = tui_source_windows ()[0];
+ src_win = *(tui_source_windows ().begin ());
second_win = src_win;
- second_win->width += width_diff;
}
/* Change the first window's height/width. */
/* Check for invalid heights. */
new_height = MIN_WIN_HEIGHT;
else
new_height = first_win->height + split_diff;
- make_invisible_and_set_new_height (first_win, new_height);
- locator->width += width_diff;
+ first_win->resize (new_height, screenwidth, 0, 0);
/* Change the second window's height/width. */
/* Check for invalid heights. */
new_height = MIN_WIN_HEIGHT;
else
new_height = second_win->height + split_diff;
- second_win->origin.y = first_win->height - 1;
- make_invisible_and_set_new_height (second_win, new_height);
+
+ second_win->resize (new_height, screenwidth,
+ 0, first_win->height - 1);
+
+ locator->resize (1, screenwidth,
+ 0, second_win->origin.y + new_height);
/* Change the command window's height/width. */
- TUI_CMD_WIN->origin.y = locator->origin.y + 1;
- make_invisible_and_set_new_height (TUI_CMD_WIN,
- TUI_CMD_WIN->height
- + cmd_split_diff);
- first_win->make_visible_with_new_height ();
- second_win->make_visible_with_new_height ();
- TUI_CMD_WIN->make_visible_with_new_height ();
- if (src_win->content.empty ())
- tui_erase_source_content (src_win, EMPTY_SOURCE_PROMPT);
+ new_height = screenheight - (locator->origin.y + 1);
+ TUI_CMD_WIN->resize (new_height, screenwidth,
+ 0, locator->origin.y + 1);
break;
}
- /* Now remove all invisible windows, and their content so that
- they get created again when called for with the new size. */
- for (win_type = SRC_WIN; (win_type < MAX_MAJOR_WINDOWS); win_type++)
- {
- if (win_type != CMD_WIN
- && (tui_win_list[win_type] != NULL)
- && !tui_win_list[win_type]->is_visible)
- {
- delete tui_win_list[win_type];
- tui_win_list[win_type] = NULL;
- }
- }
+
+ tui_delete_invisible_windows ();
/* Turn keypad back on, unless focus is in the command
window. */
if (win_with_focus != TUI_CMD_WIN)
- keypad (TUI_CMD_WIN->handle, TRUE);
+ keypad (TUI_CMD_WIN->handle.get (), TRUE);
}
}
tui_sigwinch_handler (int signal)
{
mark_async_signal_handler (tui_sigwinch_token);
- tui_set_win_resized_to (TRUE);
+ tui_set_win_resized_to (true);
}
/* Callback for asynchronously resizing TUI following a SIGWINCH signal. */
}
else
{
- tui_set_win_resized_to (FALSE);
+ tui_set_win_resized_to (false);
tui_resize_all ();
tui_refresh_all_win ();
tui_update_gdb_sizes ();
+ if (resize_message)
+ {
+ static int count;
+ printf_unfiltered ("@@ resize done %d, size = %dx%d\n", count,
+ tui_term_width (), tui_term_height ());
+ ++count;
+ }
tui_redisplay_readline ();
}
}
}
-/*************************
-** STATIC LOCAL FUNCTIONS
-**************************/
-
-
static void
tui_scroll_forward_command (const char *arg, int from_tty)
{
/* Set focus to the window named by 'arg'. */
static void
-tui_set_focus (const char *arg, int from_tty)
+tui_set_focus_command (const char *arg, int from_tty)
{
+ tui_enable ();
+
if (arg != NULL)
{
- char *buf_ptr = xstrdup (arg);
- int i;
struct tui_win_info *win_info = NULL;
- for (i = 0; (i < strlen (buf_ptr)); i++)
- buf_ptr[i] = tolower (arg[i]);
-
- if (subset_compare (buf_ptr, "next"))
+ if (subset_compare (arg, "next"))
win_info = tui_next_win (tui_win_with_focus ());
- else if (subset_compare (buf_ptr, "prev"))
+ else if (subset_compare (arg, "prev"))
win_info = tui_prev_win (tui_win_with_focus ());
else
- win_info = tui_partial_win_by_name (buf_ptr);
+ win_info = tui_partial_win_by_name (arg);
- if (win_info == NULL || !win_info->is_visible)
- warning (_("Invalid window specified. \n\
-The window name specified must be valid and visible.\n"));
- else
- {
- tui_set_win_focus_to (win_info);
- keypad (TUI_CMD_WIN->handle, (win_info != TUI_CMD_WIN));
- }
+ if (win_info == NULL)
+ error (_("Unrecognized window name \"%s\""), arg);
+ if (!win_info->is_visible ())
+ error (_("Window \"%s\" is not visible"), arg);
- if (TUI_DATA_WIN && TUI_DATA_WIN->is_visible)
- TUI_DATA_WIN->refresh_all ();
- xfree (buf_ptr);
+ tui_set_win_focus_to (win_info);
+ keypad (TUI_CMD_WIN->handle.get (), win_info != TUI_CMD_WIN);
printf_filtered (_("Focus set to %s window.\n"),
tui_win_with_focus ()->name ());
}
else
- warning (_("Incorrect Number of Arguments.\n%s"), FOCUS_USAGE);
+ error (_("Incorrect Number of Arguments.\n%s"), FOCUS_USAGE);
}
-static void
-tui_set_focus_command (const char *arg, int from_tty)
-{
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- tui_set_focus (arg, from_tty);
-}
-
-
static void
tui_all_windows_info (const char *arg, int from_tty)
{
struct tui_win_info *win_with_focus = tui_win_with_focus ();
+ struct ui_out *uiout = current_uiout;
+
+ ui_out_emit_table table_emitter (uiout, 3, -1, "tui-windows");
+ uiout->table_header (10, ui_left, "name", "Name");
+ uiout->table_header (5, ui_right, "lines", "Lines");
+ uiout->table_header (10, ui_left, "focus", "Focus");
+ uiout->table_body ();
for (tui_win_info *win_info : all_tui_windows ())
- if (win_info->is_visible)
+ if (win_info->is_visible ())
{
+ ui_out_emit_tuple tuple_emitter (uiout, nullptr);
+
+ uiout->field_string ("name", win_info->name ());
+ uiout->field_signed ("lines", win_info->height);
if (win_with_focus == win_info)
- printf_filtered (" %s\t(%d lines) <has focus>\n",
- win_info->name (),
- win_info->height);
+ uiout->field_string ("focus", _("(has focus)"));
else
- printf_filtered (" %s\t(%d lines)\n",
- win_info->name (),
- win_info->height);
+ uiout->field_skip ("focus");
+ uiout->text ("\n");
}
}
static unsigned int internal_tab_width = DEFAULT_TAB_LEN;
-/* See tui-data.h. */
-
-void
-tui_source_window_base::update_tab_width ()
-{
- /* We don't really change the height of any windows, but
- calling these 2 functions causes a complete regeneration
- and redisplay of the window's contents, which will take
- the new tab width into account. */
- make_invisible_and_set_new_height (this, height);
- make_visible_with_new_height ();
-}
-
/* After the tab width is set, call this to update the relevant
windows. */
{
for (tui_win_info *win_info : all_tui_windows ())
{
- if (win_info->is_visible)
+ if (win_info->is_visible ())
win_info->update_tab_width ();
}
}
char *buf = ©[0];
char *buf_ptr = buf;
char *wname = NULL;
- int new_height, i;
+ int new_height;
struct tui_win_info *win_info;
wname = buf_ptr;
buf_ptr = strchr (buf_ptr, ' ');
if (buf_ptr != NULL)
{
- *buf_ptr = (char) 0;
+ *buf_ptr = '\0';
/* Validate the window name. */
- for (i = 0; i < strlen (wname); i++)
- wname[i] = tolower (wname[i]);
win_info = tui_partial_win_by_name (wname);
- if (win_info == NULL || !win_info->is_visible)
- warning (_("Invalid window specified. \n\
-The window name specified must be valid and visible.\n"));
- else
+ if (win_info == NULL)
+ error (_("Unrecognized window name \"%s\""), arg);
+ if (!win_info->is_visible ())
+ error (_("Window \"%s\" is not visible"), arg);
+
+ /* Process the size. */
+ buf_ptr = skip_spaces (buf_ptr);
+
+ if (*buf_ptr != '\0')
{
- /* Process the size. */
- while (*(++buf_ptr) == ' ')
- ;
+ bool negate = false;
+ bool fixed_size = true;
+ int input_no;;
- if (*buf_ptr != (char) 0)
+ if (*buf_ptr == '+' || *buf_ptr == '-')
{
- int negate = FALSE;
- int fixed_size = TRUE;
- int input_no;;
-
- if (*buf_ptr == '+' || *buf_ptr == '-')
- {
- if (*buf_ptr == '-')
- negate = TRUE;
- fixed_size = FALSE;
- buf_ptr++;
- }
- input_no = atoi (buf_ptr);
- if (input_no > 0)
- {
- if (negate)
- input_no *= (-1);
- if (fixed_size)
- new_height = input_no;
- else
- new_height = win_info->height + input_no;
-
- /* Now change the window's height, and adjust
- all other windows around it. */
- if (tui_adjust_win_heights (win_info,
- new_height) == TUI_FAILURE)
- warning (_("Invalid window height specified.\n%s"),
- WIN_HEIGHT_USAGE);
- else
- tui_update_gdb_sizes ();
- }
+ if (*buf_ptr == '-')
+ negate = true;
+ fixed_size = false;
+ buf_ptr++;
+ }
+ input_no = atoi (buf_ptr);
+ if (input_no > 0)
+ {
+ if (negate)
+ input_no *= (-1);
+ if (fixed_size)
+ new_height = input_no;
else
+ new_height = win_info->height + input_no;
+
+ /* Now change the window's height, and adjust
+ all other windows around it. */
+ if (tui_adjust_win_heights (win_info,
+ new_height) == TUI_FAILURE)
warning (_("Invalid window height specified.\n%s"),
WIN_HEIGHT_USAGE);
+ else
+ tui_update_gdb_sizes ();
}
+ else
+ warning (_("Invalid window height specified.\n%s"),
+ WIN_HEIGHT_USAGE);
}
}
else
struct tui_win_info *win_info;
struct tui_locator_window *locator = tui_locator_win_info_ptr ();
enum tui_layout_type cur_layout = tui_current_layout ();
+ int width = tui_term_width ();
diff = (new_height - primary_win_info->height) * (-1);
if (cur_layout == SRC_COMMAND
{
struct tui_win_info *src_win_info;
- make_invisible_and_set_new_height (primary_win_info, new_height);
+ primary_win_info->resize (new_height, width,
+ 0, primary_win_info->origin.y);
if (primary_win_info->type == CMD_WIN)
{
- win_info = tui_source_windows ()[0];
+ win_info = *(tui_source_windows ().begin ());
src_win_info = win_info;
}
else
win_info = tui_win_list[CMD_WIN];
src_win_info = primary_win_info;
}
- make_invisible_and_set_new_height (win_info,
- win_info->height + diff);
+ win_info->resize (win_info->height + diff, width,
+ 0, win_info->origin.y);
TUI_CMD_WIN->origin.y = locator->origin.y + 1;
- win_info->make_visible_with_new_height ();
- primary_win_info->make_visible_with_new_height ();
if ((src_win_info->type == SRC_WIN
|| src_win_info->type == DISASSEM_WIN))
{
tui_source_window_base *src_base
= (tui_source_window_base *) src_win_info;
if (src_base->content.empty ())
- tui_erase_source_content (src_base,
- EMPTY_SOURCE_PROMPT);
+ src_base->erase_source_content ();
}
}
else
{
src1 = nullptr;
first_win = TUI_DATA_WIN;
- second_win = tui_source_windows ()[0];
+ second_win = *(tui_source_windows ().begin ());
}
if (primary_win_info == TUI_CMD_WIN)
- { /* Split the change in height accross the 1st & 2nd
+ { /* Split the change in height across the 1st & 2nd
windows, adjusting them as well. */
/* Subtract the locator. */
int first_split_diff = diff / 2;
second_split_diff++;
}
}
- /* Make sure that the minimum hieghts are
+ /* Make sure that the minimum heights are
honored. */
while ((first_win->height + first_split_diff) < 3)
{
second_split_diff++;
first_split_diff--;
}
- make_invisible_and_set_new_height (
- first_win,
- first_win->height + first_split_diff);
- second_win->origin.y = first_win->height - 1;
- make_invisible_and_set_new_height (second_win,
- second_win->height
- + second_split_diff);
- TUI_CMD_WIN->origin.y = locator->origin.y + 1;
- make_invisible_and_set_new_height (TUI_CMD_WIN, new_height);
+ first_win->resize (first_win->height + first_split_diff,
+ width,
+ 0, first_win->origin.y);
+ second_win->resize (second_win->height + second_split_diff,
+ width,
+ 0, first_win->height - 1);
+ locator->resize (1, width,
+ 0, (second_win->origin.y
+ + second_win->height + 1));
+
+ TUI_CMD_WIN->resize (new_height, width,
+ 0, locator->origin.y + 1);
}
else
{
}
}
if (primary_win_info == first_win)
- make_invisible_and_set_new_height (first_win, new_height);
+ first_win->resize (new_height, width, 0, 0);
else
- make_invisible_and_set_new_height (
- first_win,
- first_win->height);
+ first_win->resize (first_win->height, width, 0, 0);
second_win->origin.y = first_win->height - 1;
if (primary_win_info == second_win)
- make_invisible_and_set_new_height (second_win, new_height);
+ second_win->resize (new_height, width,
+ 0, first_win->height - 1);
else
- make_invisible_and_set_new_height (
- second_win, second_win->height);
+ second_win->resize (second_win->height, width,
+ 0, first_win->height - 1);
+ locator->resize (1, width,
+ 0, (second_win->origin.y
+ + second_win->height + 1));
TUI_CMD_WIN->origin.y = locator->origin.y + 1;
if ((TUI_CMD_WIN->height + diff) < 1)
- make_invisible_and_set_new_height (TUI_CMD_WIN, 1);
+ TUI_CMD_WIN->resize (1, width, 0, locator->origin.y + 1);
else
- make_invisible_and_set_new_height (TUI_CMD_WIN,
- TUI_CMD_WIN->height + diff);
+ TUI_CMD_WIN->resize (TUI_CMD_WIN->height + diff, width,
+ 0, locator->origin.y + 1);
}
- TUI_CMD_WIN->make_visible_with_new_height ();
- second_win->make_visible_with_new_height ();
- first_win->make_visible_with_new_height ();
if (src1 != nullptr && src1->content.empty ())
- tui_erase_source_content (src1, EMPTY_SOURCE_PROMPT);
+ src1->erase_source_content ();
if (second_win->content.empty ())
- tui_erase_source_content (second_win, EMPTY_SOURCE_PROMPT);
+ second_win->erase_source_content ();
}
}
}
return status;
}
-
-/* See tui-data.h. */
-
-void
-tui_source_window_base::set_new_height (int height)
-{
- tui_make_invisible (execution_info);
- execution_info->height = height;
- execution_info->origin.y = origin.y;
- if (height > 1)
- execution_info->viewport_height = height - 1;
- else
- execution_info->viewport_height = height;
- execution_info->viewport_height--;
-
- if (has_locator ())
- {
- tui_locator_window *gen_win_info = tui_locator_win_info_ptr ();
- tui_make_invisible (gen_win_info);
- gen_win_info->origin.y = origin.y + height;
- }
-}
-
-/* See tui-data.h. */
-
-void
-tui_data_window::set_new_height (int height)
-{
- /* Delete all data item windows. */
- for (auto &&win : regs_content)
- {
- tui_delete_win (win->handle);
- win->handle = NULL;
- }
-}
-
-/* Function make the target window (and auxiliary windows associated
- with the targer) invisible, and set the new height and
- location. */
-static void
-make_invisible_and_set_new_height (struct tui_win_info *win_info,
- int height)
-{
- tui_make_invisible (win_info);
- win_info->height = height;
- if (height > 1)
- win_info->viewport_height = height - 1;
- else
- win_info->viewport_height = height;
- if (win_info != TUI_CMD_WIN)
- win_info->viewport_height--;
-
- /* Now deal with the auxiliary windows associated with win_info. */
- win_info->set_new_height (height);
-}
-
-
-/* See tui-data.h. */
-
-void
-tui_win_info::make_visible_with_new_height ()
-{
- make_visible (true);
- tui_check_and_display_highlight_if_needed (this);
- do_make_visible_with_new_height ();
-}
-
-/* See tui-data.h. */
-
-void
-tui_source_window_base::do_make_visible_with_new_height ()
-{
- tui_make_visible (execution_info);
- if (!content.empty ())
- {
- struct tui_line_or_address line_or_addr;
- struct symtab_and_line cursal
- = get_current_source_symtab_and_line ();
-
- line_or_addr = start_line_or_addr;
- tui_update_source_window (this, gdbarch,
- cursal.symtab, line_or_addr, TRUE);
- }
- else if (deprecated_safe_get_selected_frame () != NULL)
- {
- struct tui_line_or_address line;
- struct symtab_and_line cursal
- = get_current_source_symtab_and_line ();
- struct frame_info *frame = deprecated_safe_get_selected_frame ();
- struct gdbarch *gdbarch = get_frame_arch (frame);
-
- struct symtab *s = find_pc_line_symtab (get_frame_pc (frame));
- if (type == SRC_WIN)
- {
- line.loa = LOA_LINE;
- line.u.line_no = cursal.line;
- }
- else
- {
- line.loa = LOA_ADDRESS;
- find_line_pc (s, cursal.line, &line.u.addr);
- }
- tui_update_source_window (this, gdbarch, s, line, TRUE);
- }
- if (has_locator ())
- {
- tui_make_visible (tui_locator_win_info_ptr ());
- tui_show_locator_content ();
- }
-}
-
-/* See tui-data.h. */
-
-void
-tui_data_window::do_make_visible_with_new_height ()
-{
- display_all_data ();
-}
-
-/* See tui-data.h. */
-
-void
-tui_cmd_window::do_make_visible_with_new_height ()
-{
-#ifdef HAVE_WRESIZE
- wresize (handle, height, width);
-#endif
- mvwin (handle, origin.y, origin.x);
- wmove (handle, 0, 0);
-}
-
/* See tui-data.h. */
int
return tui_term_height () - 2;
}
-/* See tui-data.h. */
-
-int
-tui_cmd_window::max_height () const
-{
- return tui_term_height () - 4;
-}
-
static int
new_height_ok (struct tui_win_info *primary_win_info,
int new_height)
struct tui_win_info *win_info;
if (primary_win_info == TUI_CMD_WIN)
- win_info = tui_source_windows ()[0];
+ win_info = *(tui_source_windows ().begin ());
else
win_info = TUI_CMD_WIN;
ok = ((new_height +
else
{
first_win = TUI_DATA_WIN;
- second_win = tui_source_windows ()[0];
+ second_win = *(tui_source_windows ().begin ());
}
/* We could simply add all the heights to obtain the same
result but below is more explicit since we subtract 1 for
buf_ptr = strchr (buf_ptr, ' ');
if (buf_ptr != NULL)
{
- *buf_ptr = (char) 0;
+ *buf_ptr = '\0';
if (num_to_scroll)
*num_to_scroll = atoi (num_str);
buf_ptr++;
{
const char *wname;
- if (*buf_ptr == ' ')
- while (*(++buf_ptr) == ' ')
- ;
+ wname = skip_spaces (buf_ptr);
- if (*buf_ptr != (char) 0)
+ if (*wname != '\0')
{
- /* Validate the window name. */
- for (char *p = buf_ptr; *p != '\0'; p++)
- *p = tolower (*p);
-
- wname = buf_ptr;
+ *win_to_scroll = tui_partial_win_by_name (wname);
+
+ if (*win_to_scroll == NULL)
+ error (_("Unrecognized window `%s'"), wname);
+ if (!(*win_to_scroll)->is_visible ())
+ error (_("Window is not visible"));
+ else if (*win_to_scroll == TUI_CMD_WIN)
+ *win_to_scroll = *(tui_source_windows ().begin ());
}
- else
- wname = "?";
-
- *win_to_scroll = tui_partial_win_by_name (wname);
-
- if (*win_to_scroll == NULL
- || !(*win_to_scroll)->is_visible)
- error (_("Invalid window specified. \n\
-The window name specified must be valid and visible.\n"));
- else if (*win_to_scroll == TUI_CMD_WIN)
- *win_to_scroll = tui_source_windows ()[0];
}
}
}
/* Define the classes of commands.
They will appear in the help list in the reverse of this order. */
add_prefix_cmd ("tui", class_tui, set_tui_cmd,
- _("TUI configuration variables"),
+ _("TUI configuration variables."),
&tui_setlist, "set tui ",
0 /* allow-unknown */, &setlist);
add_prefix_cmd ("tui", class_tui, show_tui_cmd,
- _("TUI configuration variables"),
+ _("TUI configuration variables."),
&tui_showlist, "show tui ",
0 /* allow-unknown */, &showlist);
add_setshow_zuinteger_cmd ("tab-width", no_class,
&internal_tab_width, _("\
Set the tab width, in characters, for the TUI."), _("\
-Show the tab witdh, in characters, for the TUI"), _("\
+Show the tab witdh, in characters, for the TUI."), _("\
This variable controls how many spaces are used to display a tab character."),
tui_set_tab_width, tui_show_tab_width,
&tui_setlist, &tui_showlist);
+
+ add_setshow_boolean_cmd ("tui-resize-message", class_maintenance,
+ &resize_message, _("\
+Set TUI resize messaging."), _("\
+Show TUI resize messaging."), _("\
+When enabled GDB will print a message when the terminal is resized."),
+ nullptr,
+ show_tui_resize_message,
+ &maintenance_set_cmdlist,
+ &maintenance_show_cmdlist);
}