clutter/actor: Make actors have a context
The context can be set via a property (currently unused) or via the current global singleton as a fallback. It means API that acts on an actor can avoid going via any globals. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3433>
This commit is contained in:
parent
2e02078638
commit
42d4287f20
@ -543,6 +543,8 @@ typedef enum
|
||||
|
||||
struct _ClutterActorPrivate
|
||||
{
|
||||
ClutterContext *context;
|
||||
|
||||
/* request mode */
|
||||
ClutterRequestMode request_mode;
|
||||
|
||||
@ -736,6 +738,8 @@ enum
|
||||
{
|
||||
PROP_0,
|
||||
|
||||
PROP_CONTEXT,
|
||||
|
||||
PROP_NAME,
|
||||
|
||||
/* X, Y, WIDTH, HEIGHT are "do what I mean" properties;
|
||||
@ -4515,6 +4519,10 @@ clutter_actor_set_property (GObject *object,
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_CONTEXT:
|
||||
priv->context = g_value_get_object (value);
|
||||
break;
|
||||
|
||||
case PROP_X:
|
||||
clutter_actor_set_x (actor, g_value_get_float (value));
|
||||
break;
|
||||
@ -4812,6 +4820,10 @@ clutter_actor_get_property (GObject *object,
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_CONTEXT:
|
||||
g_value_set_object (value, priv->context);
|
||||
break;
|
||||
|
||||
case PROP_X:
|
||||
g_value_set_float (value, clutter_actor_get_x (actor));
|
||||
break;
|
||||
@ -5546,6 +5558,9 @@ clutter_actor_constructor (GType gtype,
|
||||
clutter_actor_set_layout_manager (self, default_layout);
|
||||
}
|
||||
|
||||
if (!self->priv->context)
|
||||
self->priv->context = _clutter_context_get_default ();
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -5597,6 +5612,19 @@ clutter_actor_class_init (ClutterActorClass *klass)
|
||||
|
||||
klass->layout_manager_type = G_TYPE_INVALID;
|
||||
|
||||
/**
|
||||
* ClutterActor:context:
|
||||
*
|
||||
* The %ClutterContext of the actor
|
||||
*/
|
||||
obj_props[PROP_CONTEXT] =
|
||||
g_param_spec_object ("context", NULL, NULL,
|
||||
CLUTTER_TYPE_CONTEXT,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS |
|
||||
G_PARAM_CONSTRUCT_ONLY |
|
||||
G_PARAM_EXPLICIT_NOTIFY);
|
||||
|
||||
/**
|
||||
* ClutterActor:x:
|
||||
*
|
||||
@ -12458,6 +12486,18 @@ clutter_actor_is_scaled (ClutterActor *self)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_actor_get_context:
|
||||
* @actor: a #ClutterActor
|
||||
*
|
||||
* Returns: (transfer none): the Clutter context
|
||||
*/
|
||||
ClutterContext *
|
||||
clutter_actor_get_context (ClutterActor *actor)
|
||||
{
|
||||
return actor->priv->context;
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
_clutter_actor_get_stage_internal (ClutterActor *actor)
|
||||
{
|
||||
|
@ -663,6 +663,10 @@ gboolean clutter_actor_contains
|
||||
ClutterActor *descendant);
|
||||
CLUTTER_EXPORT
|
||||
ClutterActor* clutter_actor_get_stage (ClutterActor *actor);
|
||||
|
||||
CLUTTER_EXPORT
|
||||
ClutterContext * clutter_actor_get_context (ClutterActor *actor);
|
||||
|
||||
CLUTTER_EXPORT
|
||||
void clutter_actor_set_child_below_sibling (ClutterActor *self,
|
||||
ClutterActor *child,
|
||||
|
Loading…
x
Reference in New Issue
Block a user