From bbc8c1354e98abd1fa71e9e0346747c49df6c9c9 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 9 Aug 2017 13:33:22 +0200 Subject: [PATCH] Separate set_toggleaction_state () API Prepare for a method consistent with access_action(): * separate group + action names * no action string parsing overhead. * no fatal, abort () call for invalid actions --- libs/gtkmm2ext/actions.cc | 25 +++++++++++++++++-------- libs/gtkmm2ext/gtkmm2ext/actions.h | 16 ++++++++-------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/libs/gtkmm2ext/actions.cc b/libs/gtkmm2ext/actions.cc index 840c9dc4a2..76c6ba043b 100644 --- a/libs/gtkmm2ext/actions.cc +++ b/libs/gtkmm2ext/actions.cc @@ -220,19 +220,19 @@ ActionManager::set_sensitive (vector >& actions, bool state) } void -ActionManager::check_toggleaction (string n) +ActionManager::check_toggleaction (const string& n) { set_toggleaction_state (n, true); } void -ActionManager::uncheck_toggleaction (string n) +ActionManager::uncheck_toggleaction (const string& n) { set_toggleaction_state (n, false); } void -ActionManager::set_toggleaction_state (string n, bool s) +ActionManager::set_toggleaction_state (const string& n, bool s) { char const * name = n.c_str (); @@ -252,16 +252,25 @@ ActionManager::set_toggleaction_state (string n, bool s) group_name[len] = '\0'; const char* action_name = last_slash + 1; + if (!set_toggleaction_state (group_name, action_name, s)) { + error << string_compose (_("Unknown action name: %1/%2"), group_name, action_name) << endmsg; + } + delete [] group_name; +} + +bool +ActionManager::set_toggleaction_state (const char* group_name, const char* action_name, bool s) +{ RefPtr act = get_action (group_name, action_name); if (act) { RefPtr tact = RefPtr::cast_dynamic(act); - tact->set_active (s); - } else { - error << string_compose (_("Unknown action name: %1"), name) << endmsg; + if (tact) { + tact->set_active (s); + return true; + } } - - delete [] group_name; + return false; } void diff --git a/libs/gtkmm2ext/gtkmm2ext/actions.h b/libs/gtkmm2ext/gtkmm2ext/actions.h index 88b9628273..2d1c979ed1 100644 --- a/libs/gtkmm2ext/gtkmm2ext/actions.h +++ b/libs/gtkmm2ext/gtkmm2ext/actions.h @@ -49,14 +49,14 @@ namespace ActionManager { LIBGTKMM2EXT_API extern void do_action (const char* group, const char* name); LIBGTKMM2EXT_API extern void set_toggle_action (const char* group, const char* name, bool); - LIBGTKMM2EXT_API extern void check_toggleaction (std::string); - LIBGTKMM2EXT_API extern void uncheck_toggleaction (std::string); - LIBGTKMM2EXT_API extern void set_toggleaction_state (std::string, bool); - - - LIBGTKMM2EXT_API extern void save_action_states (); - LIBGTKMM2EXT_API extern void enable_active_actions (); - LIBGTKMM2EXT_API extern void disable_active_actions (); + LIBGTKMM2EXT_API extern void check_toggleaction (const std::string&); + LIBGTKMM2EXT_API extern void uncheck_toggleaction (const std::string&); + LIBGTKMM2EXT_API extern void set_toggleaction_state (const std::string&, bool); + LIBGTKMM2EXT_API extern bool set_toggleaction_state (const char*, const char*, bool); + + LIBGTKMM2EXT_API extern void save_action_states (); + LIBGTKMM2EXT_API extern void enable_active_actions (); + LIBGTKMM2EXT_API extern void disable_active_actions (); }; #endif /* __libgtkmm2ext_actions_h__ */ -- 2.30.2