From d93c93a8c05c2f84d453464ac6e8bd8c47c96943 Mon Sep 17 00:00:00 2001 From: yggverse Date: Mon, 27 Jan 2025 09:44:31 +0200 Subject: [PATCH] implement shared state change method for all group members --- src/app/browser/window/action.rs | 16 ++++++++++++++++ src/app/browser/window/tab.rs | 18 +++--------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/app/browser/window/action.rs b/src/app/browser/window/action.rs index d3d03d0e..56c5e7fa 100644 --- a/src/app/browser/window/action.rs +++ b/src/app/browser/window/action.rs @@ -122,4 +122,20 @@ impl Action { simple_action_group, } } + + /// Update state [SimpleAction](https://docs.gtk.org/gio/class.SimpleAction.html) for child members + /// * useful on popover menu init + pub fn change_state(&self, state: Option) { + self.bookmark.change_state(state); + self.close_all.change_state(state); + self.close.change_state(state); + self.find.change_state(state); + self.history_back.change_state(state); + self.history_forward.change_state(state); + self.home.change_state(state); + self.pin.change_state(state); + self.reload.change_state(state); + self.save_as.change_state(state); + self.source.change_state(state); + } } diff --git a/src/app/browser/window/tab.rs b/src/app/browser/window/tab.rs index d5acc99f..772de433 100644 --- a/src/app/browser/window/tab.rs +++ b/src/app/browser/window/tab.rs @@ -60,7 +60,7 @@ impl Tab { // as it will be updated on the next init for new tab selected tab_page.map(|tab_page| { index.borrow().get(tab_page).map(|item| { - // Update actions status + // Update enabled status (for some actions) action .history_back .simple_action @@ -78,20 +78,8 @@ impl Tab { .simple_action .set_enabled(item.action.reload.is_enabled()); - // Update actions target - let state = Some(tab_view.page_position(tab_page)); - - action.bookmark.change_state(state); - action.close_all.change_state(state); - action.close.change_state(state); - action.find.change_state(state); - action.history_back.change_state(state); - action.history_forward.change_state(state); - action.home.change_state(state); - action.pin.change_state(state); - action.reload.change_state(state); - action.save_as.change_state(state); - action.source.change_state(state); + // Update target (for all actions) + action.change_state(Some(tab_view.page_position(tab_page))); }) }); }