[clutter/wip/master-next: 29/31] Revert "table-layout: Use the ClutterLayoutManager animation API"



commit 1806a2140b07503b35d94d71b7436447cc5446c5
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Wed Jul 11 13:09:58 2012 +0100

    Revert "table-layout: Use the ClutterLayoutManager animation API"
    
    This reverts commit 793bde91430c53edd0b39989e59f9f77b562947e.
    
    ClutterLayoutManager implementations should just defer the easing state
    set up to the child, and not try to impose a global one.

 clutter/clutter-table-layout.c |  195 ++++++++++++++++++++++++++++++----------
 1 files changed, 148 insertions(+), 47 deletions(-)
---
diff --git a/clutter/clutter-table-layout.c b/clutter/clutter-table-layout.c
index ac76dc4..4472902 100644
--- a/clutter/clutter-table-layout.c
+++ b/clutter/clutter-table-layout.c
@@ -128,6 +128,12 @@ struct _ClutterTableLayoutPrivate
 
   GArray *columns;
   GArray *rows;
+
+  gulong easing_mode;
+  guint easing_duration;
+
+  guint is_animating   : 1;
+  guint use_animations : 1;
 };
 
 struct _ClutterTableChild
@@ -171,6 +177,8 @@ enum
 
   PROP_ROW_SPACING,
   PROP_COLUMN_SPACING,
+  PROP_USE_ANIMATIONS,
+  PROP_EASING_MODE,
   PROP_EASING_DURATION
 };
 
@@ -1375,10 +1383,6 @@ clutter_table_layout_allocate (ClutterLayoutManager   *layout,
   gint row_spacing, col_spacing;
   gint i;
   DimensionData *rows, *columns;
-  gboolean use_animations;
-  ClutterAnimationMode easing_mode;
-  guint easing_duration, easing_delay;
-
 
   update_row_col (self, container);
   if (priv->n_cols < 1 || priv->n_rows < 1)
@@ -1399,11 +1403,6 @@ clutter_table_layout_allocate (ClutterLayoutManager   *layout,
   rows = (DimensionData *) (void *) priv->rows->data;
   columns = (DimensionData *) (void *) priv->columns->data;
 
-  use_animations = clutter_layout_manager_get_easing_state (layout,
-                                                            &easing_mode,
-                                                            &easing_duration,
-                                                            &easing_delay);
-
   for (child = clutter_actor_get_first_child (actor);
        child != NULL;
        child = clutter_actor_get_next_sibling (child))
@@ -1499,12 +1498,11 @@ clutter_table_layout_allocate (ClutterLayoutManager   *layout,
       childbox.y1 = (float) child_y;
       childbox.y2 = (float) MAX (0, child_y + row_height);
 
-      if (use_animations)
+      if (priv->use_animations)
         {
           clutter_actor_save_easing_state (child);
-          clutter_actor_set_easing_mode (child, easing_mode);
-          clutter_actor_set_easing_duration (child, easing_duration);
-          clutter_actor_set_easing_delay (child, easing_delay);
+          clutter_actor_set_easing_mode (child, priv->easing_mode);
+          clutter_actor_set_easing_duration (child, priv->easing_duration);
         }
 
       if (clutter_actor_needs_expand (child, CLUTTER_ORIENTATION_HORIZONTAL) ||
@@ -1516,7 +1514,7 @@ clutter_table_layout_allocate (ClutterLayoutManager   *layout,
                                            x_fill, y_fill,
                                            flags);
 
-      if (use_animations)
+      if (priv->use_animations)
         clutter_actor_restore_easing_state (child);
     }
 }
@@ -1539,6 +1537,18 @@ clutter_table_layout_set_property (GObject      *gobject,
       clutter_table_layout_set_row_spacing (self, g_value_get_uint (value));
       break;
 
+    case PROP_USE_ANIMATIONS:
+      clutter_table_layout_set_use_animations (self, g_value_get_boolean (value));
+      break;
+
+    case PROP_EASING_MODE:
+      clutter_table_layout_set_easing_mode (self, g_value_get_ulong (value));
+      break;
+
+    case PROP_EASING_DURATION:
+      clutter_table_layout_set_easing_duration (self, g_value_get_uint (value));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
       break;
@@ -1563,6 +1573,18 @@ clutter_table_layout_get_property (GObject    *gobject,
       g_value_set_uint (value, priv->col_spacing);
       break;
 
+    case PROP_USE_ANIMATIONS:
+      g_value_set_boolean (value, priv->use_animations);
+      break;
+
+    case PROP_EASING_MODE:
+      g_value_set_ulong (value, priv->easing_mode);
+      break;
+
+    case PROP_EASING_DURATION:
+      g_value_set_uint (value, priv->easing_duration);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
       break;
@@ -1632,11 +1654,74 @@ clutter_table_layout_class_init (ClutterTableLayoutClass *klass)
                              CLUTTER_PARAM_READWRITE);
   g_object_class_install_property (gobject_class, PROP_ROW_SPACING, pspec);
 
-  /* a leftover to be compatible to the previous implementation */
+  /**
+   * ClutterTableLayout:use-animations:
+   *
+   * Whether the #ClutterTableLayout should animate changes in the
+   * layout properties.
+   *
+   * By default, #ClutterTableLayout will honour the easing state of
+   * the children when allocating them. Setting this property to
+   * %TRUE will override the easing state with the layout manager's
+   * #ClutterTableLayout:easing-mode and #ClutterTableLayout:easing-duration
+   * properties.
+   *
+   * Since: 1.4
+   *
+   * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+   *   of the children when allocating them
+   */
+  pspec = g_param_spec_boolean ("use-animations",
+                                P_("Use Animations"),
+                                P_("Whether layout changes should be animated"),
+                                FALSE,
+                                CLUTTER_PARAM_READWRITE);
+  g_object_class_install_property (gobject_class, PROP_USE_ANIMATIONS, pspec);
+
+  /**
+   * ClutterTableLayout:easing-mode:
+   *
+   * The easing mode for the animations, in case
+   * #ClutterTableLayout:use-animations is set to %TRUE.
+   *
+   * The easing mode has the same semantics of #ClutterAnimation:mode: it can
+   * either be a value from the #ClutterAnimationMode enumeration, like
+   * %CLUTTER_EASE_OUT_CUBIC, or a logical id as returned by
+   * clutter_alpha_register_func().
+   *
+   * The default value is %CLUTTER_EASE_OUT_CUBIC.
+   *
+   * Since: 1.4
+   *
+   * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+   *   of the children when allocating them
+   */
+  pspec = g_param_spec_ulong ("easing-mode",
+                              P_("Easing Mode"),
+                              P_("The easing mode of the animations"),
+                              0, G_MAXULONG,
+                              CLUTTER_EASE_OUT_CUBIC,
+                              CLUTTER_PARAM_READWRITE);
+  g_object_class_install_property (gobject_class, PROP_EASING_MODE, pspec);
+
+  /**
+   * ClutterTableLayout:easing-duration:
+   *
+   * The duration of the animations, in case #ClutterTableLayout:use-animations
+   * is set to %TRUE.
+   *
+   * The duration is expressed in milliseconds.
+   *
+   * Since: 1.4
+   *
+   * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+   *   of the children when allocating them
+   */
   pspec = g_param_spec_uint ("easing-duration",
                              P_("Easing Duration"),
                              P_("The duration of the animations"),
-                             0, G_MAXUINT, 500,
+                             0, G_MAXUINT,
+                             500,
                              CLUTTER_PARAM_READWRITE);
   g_object_class_install_property (gobject_class, PROP_EASING_DURATION, pspec);
 }
@@ -1651,6 +1736,10 @@ clutter_table_layout_init (ClutterTableLayout *layout)
   priv->row_spacing = 0;
   priv->col_spacing = 0;
 
+  priv->use_animations = FALSE;
+  priv->easing_mode = CLUTTER_EASE_OUT_CUBIC;
+  priv->easing_duration = 500;
+
   priv->columns = g_array_new (FALSE, TRUE, sizeof (DimensionData));
   priv->rows = g_array_new (FALSE, TRUE, sizeof (DimensionData));
 }
@@ -2305,17 +2394,26 @@ clutter_table_layout_get_expand (ClutterTableLayout *layout,
  *
  * Since: 1.4
  *
- * Deprecated: 1.12: #ClutterTableLayout will honour the
- *   #ClutterLayoutManager:use-animations property
+ * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+ *   of the children when allocating them
  */
 void
 clutter_table_layout_set_use_animations (ClutterTableLayout *layout,
                                          gboolean            animate)
 {
+  ClutterTableLayoutPrivate *priv;
+
   g_return_if_fail (CLUTTER_IS_TABLE_LAYOUT (layout));
 
-  clutter_layout_manager_set_use_animations (CLUTTER_LAYOUT_MANAGER (layout),
-                                             animate);
+  priv = layout->priv;
+
+  animate = !!animate;
+  if (priv->use_animations != animate)
+    {
+      priv->use_animations = animate;
+
+      g_object_notify (G_OBJECT (layout), "use-animations");
+    }
 }
 
 /**
@@ -2330,19 +2428,14 @@ clutter_table_layout_set_use_animations (ClutterTableLayout *layout,
  *
  * Since: 1.4
  *
- * Deprecated: 1.12: #ClutterTable will honour the
- *   #ClutterLayoutManager:use-animations property
+ * Deprecated: 1.12
  */
 gboolean
 clutter_table_layout_get_use_animations (ClutterTableLayout *layout)
 {
-  ClutterLayoutManager *manager;
-
   g_return_val_if_fail (CLUTTER_IS_TABLE_LAYOUT (layout), FALSE);
 
-  manager = CLUTTER_LAYOUT_MANAGER (layout);
-
-  return clutter_layout_manager_get_use_animations (manager);
+  return layout->priv->use_animations;
 }
 
 /**
@@ -2359,17 +2452,25 @@ clutter_table_layout_get_use_animations (ClutterTableLayout *layout)
  *
  * Since: 1.4
  *
- * Deprecated: 1.12: #ClutterTableLayout will honour the
- *   #ClutterLayoutManager:easing-mode property
+ * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+ *   of the children when allocating them
  */
 void
 clutter_table_layout_set_easing_mode (ClutterTableLayout *layout,
                                       gulong              mode)
 {
+  ClutterTableLayoutPrivate *priv;
+
   g_return_if_fail (CLUTTER_IS_TABLE_LAYOUT (layout));
 
-  clutter_layout_manager_set_easing_mode (CLUTTER_LAYOUT_MANAGER (layout),
-                                          mode);
+  priv = layout->priv;
+
+  if (priv->easing_mode != mode)
+    {
+      priv->easing_mode = mode;
+
+      g_object_notify (G_OBJECT (layout), "easing-mode");
+    }
 }
 
 /**
@@ -2382,20 +2483,16 @@ clutter_table_layout_set_easing_mode (ClutterTableLayout *layout,
  *
  * Since: 1.4
  *
- * Deprecated: 1.12: #ClutterTableLayout will honour the
- *   #ClutterLayoutManager:easing-mode property
+ * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+ *   of the children when allocating them
  */
 gulong
 clutter_table_layout_get_easing_mode (ClutterTableLayout *layout)
 {
-  ClutterLayoutManager *manager;
-
   g_return_val_if_fail (CLUTTER_IS_TABLE_LAYOUT (layout),
                         CLUTTER_EASE_OUT_CUBIC);
 
-  manager = CLUTTER_LAYOUT_MANAGER (layout);
-
-  return clutter_layout_manager_get_easing_mode (manager);
+  return layout->priv->easing_mode;
 }
 
 /**
@@ -2411,17 +2508,25 @@ clutter_table_layout_get_easing_mode (ClutterTableLayout *layout)
  *
  * Since: 1.4
  *
- * Deprecated: 1.12: #ClutterTableLayout will honour the
- *   #ClutterLayoutManager:easing-duration property
+ * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+ *   of the children when allocating them
  */
 void
 clutter_table_layout_set_easing_duration (ClutterTableLayout *layout,
                                           guint               msecs)
 {
+  ClutterTableLayoutPrivate *priv;
+
   g_return_if_fail (CLUTTER_IS_TABLE_LAYOUT (layout));
 
-  clutter_layout_manager_set_easing_duration (CLUTTER_LAYOUT_MANAGER (layout),
-                                              msecs);
+  priv = layout->priv;
+
+  if (priv->easing_duration != msecs)
+    {
+      priv->easing_duration = msecs;
+
+      g_object_notify (G_OBJECT (layout), "easing-duration");
+    }
 }
 
 /**
@@ -2439,13 +2544,9 @@ clutter_table_layout_set_easing_duration (ClutterTableLayout *layout,
 guint
 clutter_table_layout_get_easing_duration (ClutterTableLayout *layout)
 {
-  ClutterLayoutManager *manager;
-
   g_return_val_if_fail (CLUTTER_IS_TABLE_LAYOUT (layout), 500);
 
-  manager = CLUTTER_LAYOUT_MANAGER (layout);
-
-  return clutter_layout_manager_get_easing_duration (manager);
+  return layout->priv->easing_duration;
 }
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]