]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/tui/tui-command.c
TUI window resize should not need invisibility
[thirdparty/binutils-gdb.git] / gdb / tui / tui-command.c
CommitLineData
f377b406 1/* Specific command window processing.
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-win.h"
26#include "tui/tui-io.h"
2c0b251b 27#include "tui/tui-command.h"
db502012 28#include "tui/tui-wingeneral.h"
f33c6cbf 29
6a83354a 30#include "gdb_curses.h"
c906108c 31
ce38393b
TT
32/* See tui-command.h. */
33
ce38393b
TT
34void
35tui_cmd_window::do_make_visible_with_new_height ()
36{
37#ifdef HAVE_WRESIZE
38 wresize (handle, height, width);
39#endif
40 mvwin (handle, origin.y, origin.x);
41 wmove (handle, 0, 0);
42}
c906108c 43
ce38393b
TT
44/* See tui-command.h. */
45
46int
47tui_cmd_window::max_height () const
48{
49 return tui_term_height () - 4;
50}
c906108c 51
db502012
TT
52void
53tui_cmd_window::resize (int height_, int width_, int origin_x, int origin_y)
54{
55 width = width_;
56 height = height_;
57 if (height > 1)
58 {
59 /* Note this differs from the base class implementation, because
60 this window can't be boxed. */
61 viewport_height = height - 1;
62 }
63 else
64 viewport_height = 1;
65 origin.x = origin_x;
66 origin.y = origin_y;
67
68 if (handle == nullptr)
69 tui_make_window (this);
70 else
71 {
72 /* Another reason we don't call the base class method here is
73 that for the command window in particular, we want to avoid
74 destroying the underlying handle. We don't currently track
75 the contents of this window, and so have no way to re-render
76 it. However we can at least move it and keep the old size if
77 wresize isn't available. */
78#ifdef HAVE_WRESIZE
79 wresize (handle, height, width);
80#endif
81 mvwin (handle, origin.y, origin.x);
82 wmove (handle, 0, 0);
83 }
84}
85
518be979
DE
86/* See tui-command.h. */
87
88void
89tui_refresh_cmd_win (void)
90{
cb2ce893 91 WINDOW *w = TUI_CMD_WIN->handle;
518be979
DE
92
93 wrefresh (w);
94
95 /* FIXME: It's not clear why this is here.
96 It was present in the original tui_puts code and is kept in order to
97 not introduce some subtle breakage. */
98 fflush (stdout);
99}