diff options
author | Robin Gareus <robin@gareus.org> | 2019-02-28 23:57:32 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-02-28 23:57:32 +0100 |
commit | fc7dc6a214e023f039416ea34fc8fca516c52a94 (patch) | |
tree | 316e0f3503cc0590454a36bb3df923eaac5f3a4f /libs/gtkmm2ext | |
parent | 82440265339b69983eda71167a563407bb35acb8 (diff) |
Abort when Action cast failed
Previously the action-manager only called ::abort() when
an action could no be found. This add a further restriction
that the expected class must match.
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r-- | libs/gtkmm2ext/actions.cc | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/libs/gtkmm2ext/actions.cc b/libs/gtkmm2ext/actions.cc index 1b772757bc..2f0581e361 100644 --- a/libs/gtkmm2ext/actions.cc +++ b/libs/gtkmm2ext/actions.cc @@ -310,27 +310,34 @@ ActionManager::get_action (char const * group_name, char const * action_name, bo RefPtr<ToggleAction> ActionManager::get_toggle_action (char const * group_name, char const * action_name, bool or_die) { - RefPtr<Action> act = get_action (group_name, action_name, or_die); + RefPtr<ToggleAction> act = Glib::RefPtr<ToggleAction>::cast_dynamic (get_action (group_name, action_name, or_die)); - if (!act) { - return RefPtr<ToggleAction>(); + if (act) { + return act; } - return Glib::RefPtr<ToggleAction>::cast_dynamic (act); + if (or_die) { + ::abort (); + } + + return RefPtr<ToggleAction>(); } RefPtr<RadioAction> ActionManager::get_radio_action (char const * group_name, char const * action_name, bool or_die) { - RefPtr<Action> act = get_action (group_name, action_name, or_die); + RefPtr<RadioAction> act = Glib::RefPtr<RadioAction>::cast_dynamic (get_action (group_name, action_name, or_die)); - if (!act) { - return RefPtr<RadioAction>(); + if (act) { + return act; } - return Glib::RefPtr<RadioAction>::cast_dynamic (act); -} + if (or_die) { + ::abort (); + } + return RefPtr<RadioAction>(); +} RefPtr<ActionGroup> ActionManager::create_action_group (void * owner, string const & name) |