+2019-08-13 Tom Tromey <tom@tromey.com>
+
+ * tui/tui-win.c (tui_resize_all): Call
+ tui_delete_invisible_windows.
+ * tui/tui-layout.c (show_layout): Call
+ tui_delete_invisible_windows.
+ * tui/tui-data.h (tui_delete_invisible_windows): Declare.
+ * tui/tui-data.c (tui_delete_invisible_windows): New function.
+
2019-08-13 Tom Tromey <tom@tromey.com>
* tui/tui-disasm.c (tui_show_disassem): Add assertion. Don't call
win->title = 0;
}
+/* See tui-data.h. */
+
+void
+tui_delete_invisible_windows ()
+{
+ for (int win_type = SRC_WIN; (win_type < MAX_MAJOR_WINDOWS); win_type++)
+ {
+ if (tui_win_list[win_type] != NULL
+ && !tui_win_list[win_type]->is_visible)
+ {
+ /* This should always be made visible before a call to this
+ function. */
+ gdb_assert (win_type != CMD_WIN);
+
+ if (win_with_focus == tui_win_list[win_type])
+ win_with_focus = nullptr;
+
+ delete tui_win_list[win_type];
+ tui_win_list[win_type] = NULL;
+ }
+ }
+}
tui_win_info::tui_win_info (enum tui_win_type type)
: tui_gen_win_info (type)
extern struct tui_win_info *tui_next_win (struct tui_win_info *);
extern struct tui_win_info *tui_prev_win (struct tui_win_info *);
+/* Delete all the invisible windows. Note that it is an error to call
+ this when the command window is invisible -- we don't allow the
+ command window to be removed from the layout. */
+extern void tui_delete_invisible_windows ();
+
extern unsigned int tui_tab_width;
#endif /* TUI_TUI_DATA_H */
default:
break;
}
+
+ tui_delete_invisible_windows ();
}
}
locator->make_visible (true);
tui_show_locator_content ();
tui_add_to_source_windows (base);
+ TUI_CMD_WIN->make_visible (true);
current_layout = new_layout;
}
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
tui_erase_source_content (src_win);
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)