summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-02-28 23:57:32 +0100
committerRobin Gareus <robin@gareus.org>2019-02-28 23:57:32 +0100
commitfc7dc6a214e023f039416ea34fc8fca516c52a94 (patch)
tree316e0f3503cc0590454a36bb3df923eaac5f3a4f /libs/gtkmm2ext
parent82440265339b69983eda71167a563407bb35acb8 (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.cc25
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)