aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/idoactionhelper.c25
-rw-r--r--src/idoactionhelper.h3
2 files changed, 28 insertions, 0 deletions
diff --git a/src/idoactionhelper.c b/src/idoactionhelper.c
index fdd9479..f0e300b 100644
--- a/src/idoactionhelper.c
+++ b/src/idoactionhelper.c
@@ -401,3 +401,28 @@ ido_action_helper_activate (IdoActionHelper *helper)
if (helper->actions && helper->action_name)
g_action_group_activate_action (helper->actions, helper->action_name, helper->action_target);
}
+
+/**
+ * ido_action_helper_change_action_state:
+ * @helper: an #IdoActionHelper
+ * @state: the proposed new state of the action
+ *
+ * Requests changing the state of the action that is associated with
+ * @helper to @state.
+ *
+ * If @state is floating, it is consumed.
+ */
+void
+ido_action_helper_change_action_state (IdoActionHelper *helper,
+ GVariant *state)
+{
+ g_return_if_fail (IDO_IS_ACTION_HELPER (helper));
+ g_return_if_fail (state != NULL);
+
+ g_variant_ref_sink (state);
+
+ if (helper->actions && helper->action_name)
+ g_action_group_change_action_state (helper->actions, helper->action_name, state);
+
+ g_variant_unref (state);
+}
diff --git a/src/idoactionhelper.h b/src/idoactionhelper.h
index 22cdcae..27dafb7 100644
--- a/src/idoactionhelper.h
+++ b/src/idoactionhelper.h
@@ -41,4 +41,7 @@ GVariant * ido_action_helper_get_action_target (IdoActionHelper *helper
void ido_action_helper_activate (IdoActionHelper *helper);
+void ido_action_helper_change_action_state (IdoActionHelper *helper,
+ GVariant *state);
+
#endif