From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 57565 invoked by alias); 23 Jun 2019 23:25:56 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 57347 invoked by uid 89); 23 Jun 2019 23:25:55 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-22.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=HX-Languages-Length:9083, 6789 X-HELO: gateway34.websitewelcome.com Received: from gateway34.websitewelcome.com (HELO gateway34.websitewelcome.com) (192.185.149.105) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 23 Jun 2019 23:25:52 +0000 Received: from cm10.websitewelcome.com (cm10.websitewelcome.com [100.42.49.4]) by gateway34.websitewelcome.com (Postfix) with ESMTP id 37CFF1CE68 for ; Sun, 23 Jun 2019 18:25:51 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id fBrrhIfPn2PzOfBrrhYGGr; Sun, 23 Jun 2019 18:25:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=KKmbNghaVsATHlqTUcgcVi2pz3wS/+1fuZOw8zFxOhY=; b=TO5//Yze30dvRL6GLBlYF01APy uJg24vHnWSr740ziM17c6euNzKCcQyRW6xG+VaSkrWnBsTZJqEJhErvbMbCDkxE2kaxaGgya6Ou4H fQtHjtal/e2zohmq2pa1KKqCk; Received: from 75-166-12-78.hlrn.qwest.net ([75.166.12.78]:54396 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92) (envelope-from ) id 1hfBDC-000vDQ-NJ; Sun, 23 Jun 2019 17:43:50 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 46/66] Introduce tui_win_info::make_visible_with_new_height Date: Sun, 23 Jun 2019 23:26:00 -0000 Message-Id: <20190623224329.16060-47-tom@tromey.com> In-Reply-To: <20190623224329.16060-1-tom@tromey.com> References: <20190623224329.16060-1-tom@tromey.com> X-SW-Source: 2019-06/txt/msg00510.txt.bz2 This changes make_visible_with_new_height to be a method on tui_win_info, letting us remove a spot that checks the window type. 2019-06-23 Tom Tromey * tui/tui-win.c (tui_source_window_base::update_tab_width): Call make_visible_with_new_height method. (tui_win_info::make_visible_with_new_height): New method. (tui_source_window_base::do_make_visible_with_new_height) (tui_data_window::do_make_visible_with_new_height) (tui_cmd_window::do_make_visible_with_new_height): New methods. (make_visible_with_new_height): Remove. (tui_resize_all, tui_adjust_win_heights): Use make_visible_with_new_height method. * tui/tui-data.h (struct tui_win_info) : New methods. (struct tui_source_window_base, struct tui_data_window) (struct tui_cmd_window) : New methods. --- gdb/ChangeLog | 18 ++++++ gdb/tui/tui-data.h | 11 ++++ gdb/tui/tui-win.c | 154 ++++++++++++++++++++++----------------------- 3 files changed, 105 insertions(+), 78 deletions(-) diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h index 298ee452d50..d875eb7bbc9 100644 --- a/gdb/tui/tui-data.h +++ b/gdb/tui/tui-data.h @@ -273,6 +273,10 @@ protected: left_scroll and right_scroll. */ virtual void do_scroll_horizontal (int num_to_scroll) = 0; + /* Called after make_visible_with_new_height sets the new height. + Should update the window. */ + virtual void do_make_visible_with_new_height () = 0; + public: ~tui_win_info () override @@ -311,6 +315,9 @@ public: { } + /* Make the window visible after the height has been changed. */ + void make_visible_with_new_height (); + /* Set whether this window is highglighted. */ void set_highlight (bool highlight) { @@ -343,6 +350,7 @@ protected: DISABLE_COPY_AND_ASSIGN (tui_source_window_base); void do_scroll_horizontal (int num_to_scroll) override; + void do_make_visible_with_new_height () override; public: @@ -465,6 +473,7 @@ protected: void do_scroll_horizontal (int num_to_scroll) override { } + void do_make_visible_with_new_height () override; }; struct tui_cmd_window : public tui_win_info @@ -505,6 +514,8 @@ protected: void do_scroll_horizontal (int num_to_scroll) override { } + + void do_make_visible_with_new_height () override; }; extern int tui_win_is_auxillary (enum tui_win_type win_type); diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c index 8a4e64f3c88..2ca3d086c98 100644 --- a/gdb/tui/tui-win.c +++ b/gdb/tui/tui-win.c @@ -55,7 +55,6 @@ /******************************* ** Static Local Decls ********************************/ -static void make_visible_with_new_height (struct tui_win_info *); 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 *, @@ -616,8 +615,8 @@ tui_resize_all (void) 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); - make_visible_with_new_height (first_win); - make_visible_with_new_height (TUI_CMD_WIN); + first_win->make_visible_with_new_height (); + TUI_CMD_WIN->make_visible_with_new_height (); if (first_win->content_size <= 0) tui_erase_source_content (first_win, EMPTY_SOURCE_PROMPT); break; @@ -678,9 +677,9 @@ tui_resize_all (void) make_invisible_and_set_new_height (TUI_CMD_WIN, TUI_CMD_WIN->height + cmd_split_diff); - make_visible_with_new_height (first_win); - make_visible_with_new_height (second_win); - make_visible_with_new_height (TUI_CMD_WIN); + first_win->make_visible_with_new_height (); + second_win->make_visible_with_new_height (); + TUI_CMD_WIN->make_visible_with_new_height (); if (first_win->content_size <= 0) tui_erase_source_content (first_win, EMPTY_SOURCE_PROMPT); if (second_win->content_size <= 0) @@ -933,7 +932,7 @@ tui_source_window_base::update_tab_width () 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 (this); + make_visible_with_new_height (); } /* After the tab width is set, call this to update the relevant @@ -1126,8 +1125,8 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info, make_invisible_and_set_new_height (win_info, win_info->height + diff); TUI_CMD_WIN->origin.y = locator->origin.y + 1; - make_visible_with_new_height (win_info); - make_visible_with_new_height (primary_win_info); + win_info->make_visible_with_new_height (); + primary_win_info->make_visible_with_new_height (); if (src_win_info->content_size <= 0) tui_erase_source_content (src_win_info, EMPTY_SOURCE_PROMPT); } @@ -1228,9 +1227,9 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info, make_invisible_and_set_new_height (TUI_CMD_WIN, TUI_CMD_WIN->height + diff); } - make_visible_with_new_height (TUI_CMD_WIN); - make_visible_with_new_height (second_win); - make_visible_with_new_height (first_win); + TUI_CMD_WIN->make_visible_with_new_height (); + second_win->make_visible_with_new_height (); + first_win->make_visible_with_new_height (); if (first_win->content_size <= 0) tui_erase_source_content (first_win, EMPTY_SOURCE_PROMPT); if (second_win->content_size <= 0) @@ -1301,82 +1300,81 @@ make_invisible_and_set_new_height (struct tui_win_info *win_info, } -/* Function to make the windows with new heights visible. This means - re-creating the windows' content since the window had to be - destroyed to be made invisible. */ -static void -make_visible_with_new_height (struct tui_win_info *win_info) +/* See tui-data.h. */ + +void +tui_win_info::make_visible_with_new_height () { - struct symtab *s; + make_visible (true); + tui_check_and_display_highlight_if_needed (this); + do_make_visible_with_new_height (); +} + +/* See tui-data.h. */ - tui_make_visible (win_info); - tui_check_and_display_highlight_if_needed (win_info); - tui_source_window_base *base; - switch (win_info->type) +void +tui_source_window_base::do_make_visible_with_new_height () +{ + tui_free_win_content (execution_info); + tui_make_visible (execution_info); + if (content != NULL) { - case SRC_WIN: - case DISASSEM_WIN: - base = (tui_source_window_base *) win_info; - tui_free_win_content (base->execution_info); - tui_make_visible (base->execution_info); - if (win_info->content != NULL) - { - struct gdbarch *gdbarch = base->gdbarch; - struct tui_line_or_address line_or_addr; - struct symtab_and_line cursal - = get_current_source_symtab_and_line (); - - line_or_addr = base->start_line_or_addr; - tui_free_win_content (win_info); - tui_update_source_window (base, gdbarch, - cursal.symtab, line_or_addr, TRUE); - } - else if (deprecated_safe_get_selected_frame () != NULL) + 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_free_win_content (this); + 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) { - 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); - - s = find_pc_line_symtab (get_frame_pc (frame)); - if (win_info->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 (base, gdbarch, s, line, TRUE); + line.loa = LOA_LINE; + line.u.line_no = cursal.line; } - if (win_info->has_locator ()) + else { - tui_make_visible (tui_locator_win_info_ptr ()); - tui_show_locator_content (); + line.loa = LOA_ADDRESS; + find_line_pc (s, cursal.line, &line.u.addr); } - break; - case DATA_WIN: - tui_display_all_data (); - break; - case CMD_WIN: -#ifdef HAVE_WRESIZE - wresize (TUI_CMD_WIN->handle, - TUI_CMD_WIN->height, - TUI_CMD_WIN->width); -#endif - mvwin (TUI_CMD_WIN->handle, - TUI_CMD_WIN->origin.y, - TUI_CMD_WIN->origin.x); - wmove (win_info->handle, 0, 0); - break; - default: - break; + 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 () +{ + tui_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. */ -- 2.17.2