implement shared state change method for all group members

This commit is contained in:
yggverse 2025-01-27 09:44:31 +02:00
parent 5883593c39
commit d93c93a8c0
2 changed files with 19 additions and 15 deletions

View File

@ -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<i32>) {
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);
}
}

View File

@ -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)));
})
});
}