From 227cfb30a1da9d90ea9186963fb71acf9d5e6abf Mon Sep 17 00:00:00 2001 From: yggverse Date: Sun, 6 Oct 2024 17:41:17 +0300 Subject: [PATCH] implement separated append method for tab widget --- src/app/browser/window/tab.rs | 22 ++-------------------- src/app/browser/window/tab/widget.rs | 23 ++++++++++++++++++++++- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/app/browser/window/tab.rs b/src/app/browser/window/tab.rs index 1a3e0c17..b8fde11b 100644 --- a/src/app/browser/window/tab.rs +++ b/src/app/browser/window/tab.rs @@ -83,11 +83,7 @@ impl Tab { }); } - pub fn append( - &self, - page_navigation_request_text: Option, - is_current_page: bool, - ) -> u32 { + pub fn append(&self, page_navigation_request_text: Option, is_current_page: bool) { // Generate unique ID for new page components let id = uuid_string_random(); @@ -128,26 +124,12 @@ impl Tab { label.gobject().add_controller(controller); // Append new Notebook page - let page_number = self - .widget - .gobject() - .append_page(page.widget(), Some(label.gobject())); - - // Additional setup for Notebook tab created self.widget - .gobject() - .set_tab_reorderable(page.widget(), true); - - if is_current_page { - self.widget.gobject().set_current_page(Some(page_number)); - } + .append(label.gobject(), page.widget(), is_current_page, true); if page_navigation_request_text.is_none() { page.navigation_request_grab_focus(); } - - // Result - page_number } // Close active tab diff --git a/src/app/browser/window/tab/widget.rs b/src/app/browser/window/tab/widget.rs index b3035c44..08cea2eb 100644 --- a/src/app/browser/window/tab/widget.rs +++ b/src/app/browser/window/tab/widget.rs @@ -1,4 +1,4 @@ -use gtk::{glib::GString, prelude::WidgetExt, Notebook}; +use gtk::{glib::GString, prelude::WidgetExt, Box, Notebook}; pub struct Widget { gobject: Notebook, @@ -13,6 +13,27 @@ impl Widget { } // Actions + pub fn append( + &self, + label: &Box, + page: &Box, + is_current_page: bool, + is_reorderable: bool, + ) -> u32 { + // Append new Notebook page + let page_number = self.gobject.append_page(page, Some(label)); + + // Additional setup for Notebook tab created + self.gobject.set_tab_reorderable(page, is_reorderable); + + if is_current_page { + self.gobject.set_current_page(Some(page_number)); + } + + // Result + page_number + } + pub fn close(&self) { self.gobject.remove_page(self.gobject().current_page()); }