Remove tui_make_all_visible
[deliverable/binutils-gdb.git] / gdb / tui / tui-wingeneral.c
CommitLineData
f377b406 1/* General window behavior.
f33c6cbf 2
42a4f53d 3 Copyright (C) 1998-2019 Free Software Foundation, Inc.
f33c6cbf 4
f377b406
SC
5 Contributed by Hewlett-Packard Company.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
f377b406
SC
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c 21
96ec9981 22#include "defs.h"
d7b2e967
AC
23#include "tui/tui.h"
24#include "tui/tui-data.h"
25#include "tui/tui-wingeneral.h"
26#include "tui/tui-win.h"
f33c6cbf 27
6a83354a 28#include "gdb_curses.h"
4e8f7a8b 29
c906108c
SS
30/***********************
31** PUBLIC FUNCTIONS
32***********************/
ec7d9e56 33
5b81daba
TT
34/* See tui-data.h. */
35
c906108c 36void
5b81daba 37tui_gen_win_info::refresh_window ()
c906108c 38{
5b81daba 39 if (handle != NULL)
fd6c75ee
TT
40 {
41 touchwin (handle);
42 wrefresh (handle);
43 }
5b81daba 44}
c906108c 45
1cc6d956 46/* Function to delete the curses window, checking for NULL. */
c906108c 47void
5b6fe301 48tui_delete_win (WINDOW *window)
c906108c 49{
cafb3438 50 if (window != NULL)
c906108c 51 delwin (window);
ec7d9e56 52}
c906108c
SS
53
54
af101512 55/* Draw a border arround the window. */
2c0b251b 56static void
08ef48c5
MS
57box_win (struct tui_gen_win_info *win_info,
58 int highlight_flag)
c906108c 59{
6d012f14 60 if (win_info && win_info->handle)
c906108c 61 {
af101512
SC
62 WINDOW *win;
63 int attrs;
64
6d012f14 65 win = win_info->handle;
6ba8e26f 66 if (highlight_flag == HILITE)
af101512 67 attrs = tui_active_border_attrs;
c906108c 68 else
af101512
SC
69 attrs = tui_border_attrs;
70
71 wattron (win, attrs);
8b9cf735 72#ifdef HAVE_WBORDER
af101512
SC
73 wborder (win, tui_border_vline, tui_border_vline,
74 tui_border_hline, tui_border_hline,
75 tui_border_ulcorner, tui_border_urcorner,
76 tui_border_llcorner, tui_border_lrcorner);
8b9cf735
MK
77#else
78 box (win, tui_border_vline, tui_border_hline);
79#endif
6d012f14 80 if (win_info->title)
63a33118 81 mvwaddstr (win, 0, 3, win_info->title);
af101512 82 wattroff (win, attrs);
c906108c 83 }
af101512 84}
c906108c
SS
85
86
c906108c 87void
5b6fe301 88tui_unhighlight_win (struct tui_win_info *win_info)
c906108c 89{
e5908723 90 if (win_info != NULL
bbc228ee 91 && win_info->can_highlight
cb2ce893 92 && win_info->handle != NULL)
c906108c 93 {
cb2ce893 94 box_win (win_info, NO_HILITE);
cf82af05 95 win_info->refresh_window ();
214a5cbe 96 win_info->set_highlight (false);
c906108c 97 }
ec7d9e56 98}
c906108c
SS
99
100
c906108c 101void
5b6fe301 102tui_highlight_win (struct tui_win_info *win_info)
c906108c 103{
6d012f14
AC
104 if (win_info != NULL
105 && win_info->can_highlight
cb2ce893 106 && win_info->handle != NULL)
c906108c 107 {
cb2ce893 108 box_win (win_info, HILITE);
cf82af05 109 win_info->refresh_window ();
214a5cbe 110 win_info->set_highlight (true);
c906108c 111 }
ec7d9e56 112}
c906108c 113
c906108c 114void
5b6fe301 115tui_check_and_display_highlight_if_needed (struct tui_win_info *win_info)
c906108c 116{
00e264e7 117 if (win_info != NULL && win_info->can_highlight)
c906108c 118 {
6d012f14
AC
119 if (win_info->is_highlighted)
120 tui_highlight_win (win_info);
c906108c 121 else
6d012f14 122 tui_unhighlight_win (win_info);
c906108c
SS
123
124 }
ec7d9e56 125}
c906108c
SS
126
127
c906108c 128void
17374de4 129tui_make_window (struct tui_gen_win_info *win_info, enum tui_box box_it)
c906108c
SS
130{
131 WINDOW *handle;
132
6d012f14
AC
133 handle = newwin (win_info->height,
134 win_info->width,
135 win_info->origin.y,
136 win_info->origin.x);
137 win_info->handle = handle;
cafb3438 138 if (handle != NULL)
c906108c 139 {
6ba8e26f
AC
140 if (box_it == BOX_WINDOW)
141 box_win (win_info, NO_HILITE);
56122977 142 win_info->is_visible = true;
c906108c 143 scrollok (handle, TRUE);
c906108c 144 }
bc712bbf 145}
c906108c
SS
146
147
ec7d9e56
AC
148/* We can't really make windows visible, or invisible. So we have to
149 delete the entire window when making it visible, and create it
150 again when making it visible. */
48a3bd16
TT
151void
152tui_gen_win_info::make_visible (bool visible)
c906108c 153{
8e3cfd09
TT
154 if (is_visible == visible)
155 return;
156 is_visible = visible;
157
c906108c 158 if (visible)
8e3cfd09
TT
159 tui_make_window (this, (tui_win_is_auxiliary (type)
160 ? DONT_BOX_WINDOW : BOX_WINDOW));
161 else
c906108c 162 {
48a3bd16
TT
163 tui_delete_win (handle);
164 handle = NULL;
c906108c 165 }
ec7d9e56 166}
c906108c 167
1cc6d956
MS
168/* Makes all windows invisible (except the command and locator
169 windows). */
ec7d9e56 170static void
56122977 171make_all_visible (bool visible)
c906108c 172{
1ce3e844
TT
173 for (tui_win_info *win_info : all_tui_windows ())
174 win_info->make_visible (visible);
ec7d9e56
AC
175}
176
ec7d9e56
AC
177void
178tui_make_all_invisible (void)
179{
56122977 180 make_all_visible (false);
ec7d9e56
AC
181}
182
183/* Function to refresh all the windows currently displayed. */
c906108c 184
c906108c 185void
1ce3e844 186tui_refresh_all ()
c906108c 187{
3add462f 188 struct tui_locator_window *locator = tui_locator_win_info_ptr ();
c906108c 189
1ce3e844 190 for (tui_win_info *win_info : all_tui_windows ())
c906108c 191 {
1ce3e844 192 if (win_info->is_visible)
fd6c75ee 193 win_info->refresh_window ();
c906108c 194 }
6d012f14 195 if (locator->is_visible)
fd6c75ee 196 locator->refresh_window ();
6ba8e26f 197}
c906108c
SS
198
199
200/*********************************
201** Local Static Functions
202*********************************/
This page took 2.24549 seconds and 4 git commands to generate.