+2019-11-19 Tom Tromey <tom@tromey.com>
+
+ * tui/tui-win.c (tui_partial_win_by_name): Move from tui-data.c.
+ Now static. Change type of "name".
+ (tui_set_win_height_command): Don't copy "arg".
+ * tui/tui-data.h (tui_partial_win_by_name): Don't declare.
+ * tui/tui-data.c (tui_partial_win_by_name): Move to tui-win.c.
+
2019-11-19 Ali Tamur <tamur@google.com>
* dwarf2read.c (dw2_get_file_names_reader): Replace "if (attr)" with
+2019-11-19 Tom Tromey <tom@tromey.com>
+
+ * gdb.tui/winheight.exp: New file.
+
2019-11-19 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.base/ctf-whatis.c: Delete.
--- /dev/null
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Test the "winheight" command.
+
+load_lib "tuiterm.exp"
+
+standard_testfile tui-layout.c
+
+if {[build_executable "failed to prepare" ${testfile} ${srcfile}] == -1} {
+ return -1
+}
+
+Term::clean_restart 24 80 $testfile
+if {![Term::enter_tui]} {
+ unsupported "TUI not supported"
+}
+
+Term::check_box "source box" 0 0 80 15
+
+Term::command "winheight cmd +5"
+Term::check_box "smaller source box" 0 0 80 10
+
+Term::command "winheight cmd -5"
+Term::check_box "larger source box" 0 0 80 15
}
-/* Answer the window represented by name. */
-struct tui_win_info *
-tui_partial_win_by_name (const char *name)
-{
- if (name != NULL)
- {
- for (tui_win_info *item : all_tui_windows ())
- {
- const char *cur_name = item->name ();
-
- if (strlen (name) <= strlen (cur_name)
- && startswith (cur_name, name))
- return item;
- }
- }
-
- return NULL;
-}
-
/* See tui-data.h. */
void
/* Data Manipulation Functions. */
-extern struct tui_win_info *tui_partial_win_by_name (const char *);
extern enum tui_layout_type tui_current_layout (void);
extern int tui_term_height (void);
extern void tui_set_term_height_to (int);
#include "gdb_curses.h"
#include <ctype.h>
#include "readline/readline.h"
+#include "gdbsupport/gdb_string_view.h"
#include <signal.h>
}
+/* Answer the window represented by name. */
+static struct tui_win_info *
+tui_partial_win_by_name (gdb::string_view name)
+{
+ if (name != NULL)
+ {
+ for (tui_win_info *item : all_tui_windows ())
+ {
+ const char *cur_name = item->name ();
+
+ if (startswith (cur_name, name))
+ return item;
+ }
+ }
+
+ return NULL;
+}
+
/* Set focus to the window named by 'arg'. */
static void
tui_set_focus_command (const char *arg, int from_tty)
tui_enable ();
if (arg != NULL)
{
- std::string copy = arg;
- char *buf = ©[0];
- char *buf_ptr = buf;
- char *wname = NULL;
+ const char *buf = arg;
+ const char *buf_ptr = buf;
int new_height;
struct tui_win_info *win_info;
- wname = buf_ptr;
buf_ptr = strchr (buf_ptr, ' ');
if (buf_ptr != NULL)
{
- *buf_ptr = '\0';
-
/* Validate the window name. */
+ gdb::string_view wname (buf, buf_ptr - buf);
win_info = tui_partial_win_by_name (wname);
if (win_info == NULL)