mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 03:16:17 +01:00
GSimpleAction: add g_simple_action_set_state_hint
Currently the only way to set a state hint on an action is through a subclass; add a g_simple_action_set_state_hint() method so that this becomes easier for clients that already use GSimpleAction. https://bugzilla.gnome.org/show_bug.cgi?id=743521
This commit is contained in:
parent
2a0c18041b
commit
be2d9b4f58
@ -3221,6 +3221,7 @@ g_simple_action_new_stateful
|
|||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
g_simple_action_set_enabled
|
g_simple_action_set_enabled
|
||||||
g_simple_action_set_state
|
g_simple_action_set_state
|
||||||
|
g_simple_action_set_state_hint
|
||||||
|
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
g_simple_action_get_type
|
g_simple_action_get_type
|
||||||
|
@ -44,6 +44,7 @@ struct _GSimpleAction
|
|||||||
GVariantType *parameter_type;
|
GVariantType *parameter_type;
|
||||||
gboolean enabled;
|
gboolean enabled;
|
||||||
GVariant *state;
|
GVariant *state;
|
||||||
|
GVariant *state_hint;
|
||||||
gboolean state_set_already;
|
gboolean state_set_already;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -102,7 +103,12 @@ g_simple_action_get_state_type (GAction *action)
|
|||||||
static GVariant *
|
static GVariant *
|
||||||
g_simple_action_get_state_hint (GAction *action)
|
g_simple_action_get_state_hint (GAction *action)
|
||||||
{
|
{
|
||||||
return NULL;
|
GSimpleAction *simple = G_SIMPLE_ACTION (action);
|
||||||
|
|
||||||
|
if (simple->state_hint != NULL)
|
||||||
|
return g_variant_ref (simple->state_hint);
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -319,6 +325,8 @@ g_simple_action_finalize (GObject *object)
|
|||||||
g_variant_type_free (simple->parameter_type);
|
g_variant_type_free (simple->parameter_type);
|
||||||
if (simple->state)
|
if (simple->state)
|
||||||
g_variant_unref (simple->state);
|
g_variant_unref (simple->state);
|
||||||
|
if (simple->state_hint)
|
||||||
|
g_variant_unref (simple->state_hint);
|
||||||
|
|
||||||
G_OBJECT_CLASS (g_simple_action_parent_class)
|
G_OBJECT_CLASS (g_simple_action_parent_class)
|
||||||
->finalize (object);
|
->finalize (object);
|
||||||
@ -543,6 +551,35 @@ g_simple_action_set_enabled (GSimpleAction *simple,
|
|||||||
g_object_notify (G_OBJECT (simple), "enabled");
|
g_object_notify (G_OBJECT (simple), "enabled");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_simple_action_set_state_hint:
|
||||||
|
* @simple: a #GSimpleAction
|
||||||
|
* @state_hint: (allow-none): a #GVariant representing the state hint
|
||||||
|
*
|
||||||
|
* Sets the state hint for the action.
|
||||||
|
*
|
||||||
|
* See g_action_get_state_hint() for more information about
|
||||||
|
* action state hints.
|
||||||
|
*
|
||||||
|
* Since: 2.44
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
g_simple_action_set_state_hint (GSimpleAction *simple,
|
||||||
|
GVariant *state_hint)
|
||||||
|
{
|
||||||
|
g_return_if_fail (G_IS_SIMPLE_ACTION (simple));
|
||||||
|
|
||||||
|
if (simple->state_hint != NULL)
|
||||||
|
{
|
||||||
|
g_variant_unref (simple->state_hint);
|
||||||
|
simple->state_hint = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state_hint != NULL)
|
||||||
|
simple->state_hint = g_variant_ref (state_hint);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* g_simple_action_new:
|
* g_simple_action_new:
|
||||||
* @name: the name of the action
|
* @name: the name of the action
|
||||||
|
@ -54,6 +54,10 @@ GLIB_AVAILABLE_IN_2_30
|
|||||||
void g_simple_action_set_state (GSimpleAction *simple,
|
void g_simple_action_set_state (GSimpleAction *simple,
|
||||||
GVariant *value);
|
GVariant *value);
|
||||||
|
|
||||||
|
GLIB_AVAILABLE_IN_2_44
|
||||||
|
void g_simple_action_set_state_hint (GSimpleAction *simple,
|
||||||
|
GVariant *state_hint);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __G_SIMPLE_ACTION_H__ */
|
#endif /* __G_SIMPLE_ACTION_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user