[clutter] actor: Fix set_scale_with_gravity()
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] actor: Fix set_scale_with_gravity()
- Date: Sat, 17 Mar 2012 16:29:49 +0000 (UTC)
commit 63f3eaab62ddd42af5b0d3511d3930232c496485
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Sat Mar 17 16:17:39 2012 +0000
actor: Fix set_scale_with_gravity()
Add a scale-gravity internal setter, and make set_scale_with_gravity()
call it, along with the scale factor.
clutter/clutter-actor.c | 67 +++++++++++++++++++++--------------------------
1 files changed, 30 insertions(+), 37 deletions(-)
---
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index 460b5d0..78f3006 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -4158,6 +4158,30 @@ clutter_actor_set_scale_center (ClutterActor *self,
}
static inline void
+clutter_actor_set_scale_gravity (ClutterActor *self,
+ ClutterGravity gravity)
+{
+ ClutterTransformInfo *info;
+ GObject *obj;
+
+ info = _clutter_actor_get_transform_info (self);
+ obj = G_OBJECT (self);
+
+ if (gravity == CLUTTER_GRAVITY_NONE)
+ clutter_anchor_coord_set_units (&info->scale_center, 0, 0, 0);
+ else
+ clutter_anchor_coord_set_gravity (&info->scale_center, gravity);
+
+ self->priv->transform_valid = FALSE;
+
+ g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_CENTER_X]);
+ g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_CENTER_Y]);
+ g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_GRAVITY]);
+
+ clutter_actor_queue_redraw (self);
+}
+
+static inline void
clutter_actor_set_anchor_coord (ClutterActor *self,
ClutterRotateAxis axis,
gfloat coord)
@@ -4326,18 +4350,7 @@ clutter_actor_set_property (GObject *object,
break;
case PROP_SCALE_GRAVITY:
- {
- const ClutterTransformInfo *info;
- ClutterGravity gravity;
-
- info = _clutter_actor_get_transform_info_or_defaults (actor);
- gravity = g_value_get_enum (value);
-
- clutter_actor_set_scale_with_gravity (actor,
- info->scale_x,
- info->scale_y,
- gravity);
- }
+ clutter_actor_set_scale_gravity (actor, g_value_get_enum (value));
break;
case PROP_CLIP:
@@ -9770,35 +9783,15 @@ clutter_actor_set_scale_with_gravity (ClutterActor *self,
gdouble scale_y,
ClutterGravity gravity)
{
- ClutterTransformInfo *info;
- GObject *obj;
-
g_return_if_fail (CLUTTER_IS_ACTOR (self));
- obj = G_OBJECT (self);
-
- g_object_freeze_notify (obj);
-
- info = _clutter_actor_get_transform_info (self);
- info->scale_x = scale_x;
- info->scale_y = scale_y;
-
- if (gravity == CLUTTER_GRAVITY_NONE)
- clutter_anchor_coord_set_units (&info->scale_center, 0, 0, 0);
- else
- clutter_anchor_coord_set_gravity (&info->scale_center, gravity);
-
- self->priv->transform_valid = FALSE;
-
- g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_X]);
- g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_Y]);
- g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_CENTER_X]);
- g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_CENTER_Y]);
- g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_GRAVITY]);
+ g_object_freeze_notify (G_OBJECT (self));
- clutter_actor_queue_redraw (self);
+ clutter_actor_set_scale_factor (self, CLUTTER_X_AXIS, scale_x);
+ clutter_actor_set_scale_factor (self, CLUTTER_Y_AXIS, scale_y);
+ clutter_actor_set_scale_gravity (self, gravity);
- g_object_thaw_notify (obj);
+ g_object_thaw_notify (G_OBJECT (self));
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]