diff --git a/src/browser/main/mod.rs b/src/browser/main/mod.rs index 141ca016..00dff34f 100644 --- a/src/browser/main/mod.rs +++ b/src/browser/main/mod.rs @@ -30,6 +30,10 @@ impl Main { self.tab.append(true); } + pub fn tab_page_reload(&self) { + self.tab.page_reload(); + } + pub fn tab_close(&self) { self.tab.close(); } diff --git a/src/browser/main/tab/mod.rs b/src/browser/main/tab/mod.rs index 2ea6a3b6..1b494600 100644 --- a/src/browser/main/tab/mod.rs +++ b/src/browser/main/tab/mod.rs @@ -120,6 +120,19 @@ impl Tab { } } + pub fn page_reload(&self) { + // Get current page + if let Some(page_number) = self.widget.current_page() { + // Get default widget to extract it name as the ID for childs + if let Some(widget) = self.widget.nth_page(Some(page_number)) { + // Get page by widget ID + if let Some(page) = self.pages.borrow().get(&widget.widget_name()) { + page.reload(); + } + } + } + } + pub fn update(&self) { // Get current page if let Some(page_number) = self.widget.current_page() { diff --git a/src/browser/main/tab/page/content/mod.rs b/src/browser/main/tab/page/content/mod.rs index 33f818c7..e03402fa 100644 --- a/src/browser/main/tab/page/content/mod.rs +++ b/src/browser/main/tab/page/content/mod.rs @@ -1,4 +1,4 @@ -use gtk::{Box, Orientation}; +use gtk::{glib::GString, Box, Orientation}; pub struct Content { widget: Box, @@ -12,6 +12,11 @@ impl Content { } } + // Actions + pub fn reload(&self, request_text: GString) { + // @TODO + } + // Getters pub fn widget(&self) -> &Box { &self.widget diff --git a/src/browser/main/tab/page/mod.rs b/src/browser/main/tab/page/mod.rs index d6c68ea3..f5019565 100644 --- a/src/browser/main/tab/page/mod.rs +++ b/src/browser/main/tab/page/mod.rs @@ -37,6 +37,10 @@ impl Page { } // Actions + pub fn reload(&self) { + self.content.reload(self.navigation.request_text()); + } + pub fn update(&self) { self.navigation.update(); // @TODO self.content.update(); diff --git a/src/browser/main/tab/page/navigation/mod.rs b/src/browser/main/tab/page/navigation/mod.rs index 8eb7368c..4e41508c 100644 --- a/src/browser/main/tab/page/navigation/mod.rs +++ b/src/browser/main/tab/page/navigation/mod.rs @@ -10,7 +10,7 @@ use history::History; use reload::Reload; use request::Request; -use gtk::{prelude::BoxExt, Box, Orientation}; +use gtk::{glib::GString, prelude::BoxExt, Box, Orientation}; pub struct Navigation { // GTK @@ -72,4 +72,8 @@ impl Navigation { pub fn widget(&self) -> &Box { &self.widget } + + pub fn request_text(&self) -> GString { + self.request.text() + } } diff --git a/src/browser/main/tab/page/navigation/request/mod.rs b/src/browser/main/tab/page/navigation/request/mod.rs index ce741fbe..15e0538a 100644 --- a/src/browser/main/tab/page/navigation/request/mod.rs +++ b/src/browser/main/tab/page/navigation/request/mod.rs @@ -1,4 +1,5 @@ use gtk::{ + glib::GString, prelude::{EditableExt, EntryExt, WidgetExt}, Entry, }; @@ -44,4 +45,8 @@ impl Request { pub fn is_empty(&self) -> bool { 0 == self.widget.text_length() } + + pub fn text(&self) -> GString { + self.widget.text() + } } diff --git a/src/browser/mod.rs b/src/browser/mod.rs index 25b9312c..699784c1 100644 --- a/src/browser/mod.rs +++ b/src/browser/mod.rs @@ -71,6 +71,14 @@ impl Browser { } }) .build(), + ActionEntry::builder("tab_page_reload") + .activate({ + let main = main.clone(); + move |_, _, _| { + main.tab_page_reload(); + } + }) + .build(), ActionEntry::builder("tab_close") .activate({ let main = main.clone();