[gnome-shell] [St] share common ClutterContainer implementation code



commit f6b4fa6e7e346ebdd1911860ecb3b178ca312de0
Author: Dan Winship <danw gnome org>
Date:   Tue Mar 2 15:05:14 2010 -0500

    [St] share common ClutterContainer implementation code
    
    https://bugzilla.gnome.org/show_bug.cgi?id=611647

 src/st/st-box-layout.c   |  114 ++---------------------
 src/st/st-overflow-box.c |  114 ++---------------------
 src/st/st-private.c      |  228 ++++++++++++++++++++++++++++++++++++++++++++++
 src/st/st-private.h      |   21 ++++
 src/st/st-table.c        |  135 +++++++++++----------------
 5 files changed, 323 insertions(+), 289 deletions(-)
---
diff --git a/src/st/st-box-layout.c b/src/st/st-box-layout.c
index 5062c07..eede854 100644
--- a/src/st/st-box-layout.c
+++ b/src/st/st-box-layout.c
@@ -256,13 +256,7 @@ st_box_container_add_actor (ClutterContainer *container,
 {
   StBoxLayoutPrivate *priv = ST_BOX_LAYOUT (container)->priv;
 
-  clutter_actor_set_parent (actor, CLUTTER_ACTOR (container));
-
-  priv->children = g_list_append (priv->children, actor);
-
-  clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
-
-  g_signal_emit_by_name (container, "actor-added", actor);
+  _st_container_add_actor (container, actor, &priv->children);
 }
 
 static void
@@ -271,28 +265,7 @@ st_box_container_remove_actor (ClutterContainer *container,
 {
   StBoxLayoutPrivate *priv = ST_BOX_LAYOUT (container)->priv;
 
-  GList *item = NULL;
-
-  item = g_list_find (priv->children, actor);
-
-  if (item == NULL)
-    {
-      g_warning ("Actor of type '%s' is not a child of container of type '%s'",
-                 g_type_name (G_OBJECT_TYPE (actor)),
-                 g_type_name (G_OBJECT_TYPE (container)));
-      return;
-    }
-
-  g_object_ref (actor);
-
-  priv->children = g_list_delete_link (priv->children, item);
-  clutter_actor_unparent (actor);
-
-  g_signal_emit_by_name (container, "actor-removed", actor);
-
-  g_object_unref (actor);
-
-  clutter_actor_queue_relayout ((ClutterActor*) container);
+  _st_container_remove_actor (container, actor, &priv->children);
 }
 
 static void
@@ -302,7 +275,8 @@ st_box_container_foreach (ClutterContainer *container,
 {
   StBoxLayoutPrivate *priv = ST_BOX_LAYOUT (container)->priv;
 
-  g_list_foreach (priv->children, (GFunc) callback, callback_data);
+  _st_container_foreach (container, callback, callback_data,
+                         &priv->children);
 }
 
 static void
@@ -312,40 +286,7 @@ st_box_container_lower (ClutterContainer *container,
 {
   StBoxLayoutPrivate *priv = ST_BOX_LAYOUT (container)->priv;
 
-  /* copied from clutter/clutter/clutter-group.c */
-
-  priv->children = g_list_remove (priv->children, actor);
-
-  /* Push to bottom */
-  if (!sibling)
-    {
-      GList *last_item;
-
-      last_item = g_list_first (priv->children);
-
-      if (last_item)
-	sibling = last_item->data;
-
-      priv->children = g_list_prepend (priv->children, actor);
-    }
-  else
-    {
-      gint pos;
-
-      pos = g_list_index (priv->children, sibling);
-
-      priv->children = g_list_insert (priv->children, actor, pos);
-    }
-
-  /* See comment in group_raise for this */
-  if (sibling &&
-      clutter_actor_get_depth (sibling) != clutter_actor_get_depth (actor))
-    {
-      clutter_actor_set_depth (actor, clutter_actor_get_depth (sibling));
-    }
-
-  if (CLUTTER_ACTOR_IS_VISIBLE (container))
-    clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+  _st_container_lower (container, actor, sibling, &priv->children);
 }
 
 static void
@@ -355,52 +296,15 @@ st_box_container_raise (ClutterContainer *container,
 {
   StBoxLayoutPrivate *priv = ST_BOX_LAYOUT (container)->priv;
 
-  priv->children = g_list_remove (priv->children, actor);
-
-  /* copied from clutter/clutter/clutter-group.c */
-
-  /* Raise at the top */
-  if (!sibling)
-    {
-      GList *last_item;
-
-      last_item = g_list_last (priv->children);
-
-      if (last_item)
-	sibling = last_item->data;
-
-      priv->children = g_list_append (priv->children, actor);
-    }
-  else
-    {
-      gint pos;
-
-      pos = g_list_index (priv->children, sibling) + 1;
-
-      priv->children = g_list_insert (priv->children, actor, pos);
-    }
-
-  /* set Z ordering a value below, this will then call sort
-   * as values are equal ordering shouldn't change but Z
-   * values will be correct.
-   *
-   * FIXME: optimise
-   */
-  if (sibling &&
-      clutter_actor_get_depth (sibling) != clutter_actor_get_depth (actor))
-    {
-      clutter_actor_set_depth (actor, clutter_actor_get_depth (sibling));
-    }
-
-  if (CLUTTER_ACTOR_IS_VISIBLE (container))
-    clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+  _st_container_raise (container, actor, sibling, &priv->children);
 }
 
 static void
 st_box_container_sort_depth_order (ClutterContainer *container)
 {
-  /* XXX: not yet implemented */
-  g_warning ("%s() not yet implemented", __FUNCTION__);
+  StBoxLayoutPrivate *priv = ST_BOX_LAYOUT (container)->priv;
+
+  _st_container_sort_depth_order (container, &priv->children);
 }
 
 static void
diff --git a/src/st/st-overflow-box.c b/src/st/st-overflow-box.c
index 6249398..567067a 100644
--- a/src/st/st-overflow-box.c
+++ b/src/st/st-overflow-box.c
@@ -74,13 +74,7 @@ st_overflow_box_add_actor (ClutterContainer *container,
 {
   StOverflowBoxPrivate *priv = ST_OVERFLOW_BOX (container)->priv;
 
-  clutter_actor_set_parent (actor, CLUTTER_ACTOR (container));
-
-  priv->children = g_list_append (priv->children, actor);
-
-  clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
-
-  g_signal_emit_by_name (container, "actor-added", actor);
+  _st_container_add_actor (container, actor, &priv->children);
 }
 
 static void
@@ -89,28 +83,7 @@ st_overflow_box_remove_actor (ClutterContainer *container,
 {
   StOverflowBoxPrivate *priv = ST_OVERFLOW_BOX (container)->priv;
 
-  GList *item = NULL;
-
-  item = g_list_find (priv->children, actor);
-
-  if (item == NULL)
-    {
-      g_warning ("Actor of type '%s' is not a child of container of type '%s'",
-                 g_type_name (G_OBJECT_TYPE (actor)),
-                 g_type_name (G_OBJECT_TYPE (container)));
-      return;
-    }
-
-  g_object_ref (actor);
-
-  priv->children = g_list_delete_link (priv->children, item);
-  clutter_actor_unparent (actor);
-
-  g_signal_emit_by_name (container, "actor-removed", actor);
-
-  g_object_unref (actor);
-
-  clutter_actor_queue_relayout ((ClutterActor*) container);
+  _st_container_remove_actor (container, actor, &priv->children);
 }
 
 static void
@@ -120,7 +93,8 @@ st_overflow_box_foreach (ClutterContainer *container,
 {
   StOverflowBoxPrivate *priv = ST_OVERFLOW_BOX (container)->priv;
 
-  g_list_foreach (priv->children, (GFunc) callback, callback_data);
+  _st_container_foreach (container, callback, callback_data,
+                         &priv->children);
 }
 
 static void
@@ -130,40 +104,7 @@ st_overflow_box_lower (ClutterContainer *container,
 {
   StOverflowBoxPrivate *priv = ST_OVERFLOW_BOX (container)->priv;
 
-  /* copied from clutter/clutter/clutter-group.c */
-
-  priv->children = g_list_remove (priv->children, actor);
-
-  /* Push to bottom */
-  if (!sibling)
-    {
-      GList *last_item;
-
-      last_item = g_list_first (priv->children);
-
-      if (last_item)
-	sibling = last_item->data;
-
-      priv->children = g_list_prepend (priv->children, actor);
-    }
-  else
-    {
-      gint pos;
-
-      pos = g_list_index (priv->children, sibling);
-
-      priv->children = g_list_insert (priv->children, actor, pos);
-    }
-
-  /* See comment in group_raise for this */
-  if (sibling &&
-      clutter_actor_get_depth (sibling) != clutter_actor_get_depth (actor))
-    {
-      clutter_actor_set_depth (actor, clutter_actor_get_depth (sibling));
-    }
-
-  if (CLUTTER_ACTOR_IS_VISIBLE (container))
-    clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+  _st_container_lower (container, actor, sibling, &priv->children);
 }
 
 static void
@@ -173,52 +114,15 @@ st_overflow_box_raise (ClutterContainer *container,
 {
   StOverflowBoxPrivate *priv = ST_OVERFLOW_BOX (container)->priv;
 
-  priv->children = g_list_remove (priv->children, actor);
-
-  /* copied from clutter/clutter/clutter-group.c */
-
-  /* Raise at the top */
-  if (!sibling)
-    {
-      GList *last_item;
-
-      last_item = g_list_last (priv->children);
-
-      if (last_item)
-	sibling = last_item->data;
-
-      priv->children = g_list_append (priv->children, actor);
-    }
-  else
-    {
-      gint pos;
-
-      pos = g_list_index (priv->children, sibling) + 1;
-
-      priv->children = g_list_insert (priv->children, actor, pos);
-    }
-
-  /* set Z ordering a value below, this will then call sort
-   * as values are equal ordering shouldn't change but Z
-   * values will be correct.
-   *
-   * FIXME: optimise
-   */
-  if (sibling &&
-      clutter_actor_get_depth (sibling) != clutter_actor_get_depth (actor))
-    {
-      clutter_actor_set_depth (actor, clutter_actor_get_depth (sibling));
-    }
-
-  if (CLUTTER_ACTOR_IS_VISIBLE (container))
-    clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+  _st_container_raise (container, actor, sibling, &priv->children);
 }
 
 static void
 st_overflow_box_sort_depth_order (ClutterContainer *container)
 {
-  /* XXX: not yet implemented */
-  g_warning ("%s() not yet implemented", __FUNCTION__);
+  StOverflowBoxPrivate *priv = ST_OVERFLOW_BOX (container)->priv;
+
+  _st_container_sort_depth_order (container, &priv->children);
 }
 
 static void
diff --git a/src/st/st-private.c b/src/st/st-private.c
index 7586e2b..e0fee5a 100644
--- a/src/st/st-private.c
+++ b/src/st/st-private.c
@@ -310,3 +310,231 @@ _st_set_text_from_style (ClutterText *text,
 
   pango_attr_list_unref (attribs);
 }
+
+/**
+ * _st_container_add_actor:
+ * @container: a #ClutterContainer
+ * @actor: a #ClutterActor
+ * @children: pointer to @container's list of children
+ *
+ * A basic implementation for clutter_container_add_actor().
+ * Mostly copied from clutter_group_real_add().
+ */
+void
+_st_container_add_actor (ClutterContainer  *container,
+                         ClutterActor      *actor,
+                         GList            **children)
+{
+  g_object_ref (actor);
+
+  *children = g_list_append (*children, actor);
+  clutter_actor_set_parent (actor, CLUTTER_ACTOR (container));
+
+  /* queue a relayout, to get the correct positioning inside
+   * the ::actor-added signal handlers
+   */
+  clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
+
+  g_signal_emit_by_name (container, "actor-added", actor);
+
+  clutter_container_sort_depth_order (container);
+
+  g_object_unref (actor);
+}
+
+/**
+ * _st_container_remove_actor:
+ * @container: a #ClutterContainer
+ * @actor: a #ClutterActor
+ * @children: pointer to @container's list of children
+ *
+ * A basic implementation for clutter_container_remove_actor().
+ * Mostly copied from clutter_group_real_remove().
+ */
+void
+_st_container_remove_actor (ClutterContainer  *container,
+                            ClutterActor      *actor,
+                            GList            **children)
+{
+  g_object_ref (actor);
+
+  *children = g_list_remove (*children, actor);
+  clutter_actor_unparent (actor);
+
+  /* queue a relayout, to get the correct positioning inside
+   * the ::actor-removed signal handlers
+   */
+  clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
+
+  /* at this point, the actor passed to the "actor-removed" signal
+   * handlers is not parented anymore to the container but since we
+   * are holding a reference on it, it's still valid
+   */
+  g_signal_emit_by_name (container, "actor-removed", actor);
+
+  if (CLUTTER_ACTOR_IS_VISIBLE (container))
+    clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+
+  g_object_unref (actor);
+}
+
+/**
+ * _st_container_raise:
+ * @container: a #ClutterContainer
+ * @callback: callback
+ * @user_data: data for @callback
+ * @children: pointer to @container's list of children
+ *
+ * A basic implementation for clutter_container_foreach().
+ * Mostly copied from clutter_group_real_foreach().
+ */
+void
+_st_container_foreach (ClutterContainer  *container,
+                       ClutterCallback    callback,
+                       gpointer           user_data,
+                       GList            **children)
+{
+  GList *l;
+
+  for (l = *children; l; l = l->next)
+    (* callback) (CLUTTER_ACTOR (l->data), user_data);
+}
+
+/**
+ * _st_container_raise:
+ * @container: a #ClutterContainer
+ * @actor: a #ClutterActor to raise
+ * @sibling: the sibling to raise to, or %NULL to put on top
+ * @children: pointer to @container's list of children
+ *
+ * A basic implementation for clutter_container_raise().
+ * Mostly copied from clutter_group_real_raise().
+ */
+void
+_st_container_raise (ClutterContainer  *container,
+                     ClutterActor      *actor,
+                     ClutterActor      *sibling,
+                     GList            **children)
+{
+  *children = g_list_remove (*children, actor);
+
+  /* Raise at the top */
+  if (!sibling)
+    {
+      GList *last_item;
+
+      last_item = g_list_last (*children);
+
+      if (last_item)
+	sibling = last_item->data;
+
+      *children = g_list_append (*children, actor);
+    }
+  else
+    {
+      gint pos;
+
+      pos = g_list_index (*children, sibling) + 1;
+
+      *children = g_list_insert (*children, actor, pos);
+    }
+
+  /* set Z ordering a value below, this will then call sort
+   * as values are equal ordering shouldn't change but Z
+   * values will be correct.
+   *
+   * FIXME: optimise
+   */
+  if (sibling &&
+      clutter_actor_get_depth (sibling) != clutter_actor_get_depth (actor))
+    {
+      clutter_actor_set_depth (actor, clutter_actor_get_depth (sibling));
+    }
+
+  if (CLUTTER_ACTOR_IS_VISIBLE (container))
+    clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+}
+
+/**
+ * _st_container_lower:
+ * @container: a #ClutterContainer
+ * @actor: a #ClutterActor to lower
+ * @sibling: the sibling to lower to, or %NULL to put on bottom
+ * @children: pointer to @container's list of children
+ *
+ * A basic implementation for clutter_container_lower().
+ * Mostly copied from clutter_group_real_lower().
+ */
+void
+_st_container_lower (ClutterContainer  *container,
+                     ClutterActor      *actor,
+                     ClutterActor      *sibling,
+                     GList            **children)
+{
+  *children = g_list_remove (*children, actor);
+
+  /* Push to bottom */
+  if (!sibling)
+    {
+      GList *last_item;
+
+      last_item = g_list_first (*children);
+
+      if (last_item)
+	sibling = last_item->data;
+
+      *children = g_list_prepend (*children, actor);
+    }
+  else
+    {
+      gint pos;
+
+      pos = g_list_index (*children, sibling);
+
+      *children = g_list_insert (*children, actor, pos);
+    }
+
+  /* See comment in _st_container_raise() for this */
+  if (sibling &&
+      clutter_actor_get_depth (sibling) != clutter_actor_get_depth (actor))
+    {
+      clutter_actor_set_depth (actor, clutter_actor_get_depth (sibling));
+    }
+
+  if (CLUTTER_ACTOR_IS_VISIBLE (container))
+    clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+}
+
+static gint
+sort_z_order (gconstpointer a,
+              gconstpointer b)
+{
+  float depth_a, depth_b;
+
+  depth_a = clutter_actor_get_depth (CLUTTER_ACTOR (a));
+  depth_b = clutter_actor_get_depth (CLUTTER_ACTOR (b));
+
+  if (depth_a < depth_b)
+    return -1;
+  if (depth_a > depth_b)
+    return 1;
+  return 0;
+}
+
+/**
+ * _st_container_sort_depth_order:
+ * @container: a #ClutterContainer
+ * @children: pointer to @container's list of children
+ *
+ * A basic implementation for clutter_container_sort_depth_order().
+ * Mostly copied from clutter_group_real_sort_depth_order().
+ */
+void
+_st_container_sort_depth_order (ClutterContainer  *container,
+                                GList            **children)
+{
+  *children = g_list_sort (*children, sort_z_order);
+
+  if (CLUTTER_ACTOR_IS_VISIBLE (container))
+    clutter_actor_queue_redraw (CLUTTER_ACTOR (container));
+}
diff --git a/src/st/st-private.h b/src/st/st-private.h
index 8368665..d22e11f 100644
--- a/src/st/st-private.h
+++ b/src/st/st-private.h
@@ -72,4 +72,25 @@ void _st_allocate_fill (StWidget        *parent,
 void _st_set_text_from_style (ClutterText *text,
                               StThemeNode *theme_node);
 
+void _st_container_add_actor        (ClutterContainer  *container,
+                                     ClutterActor      *actor,
+                                     GList            **children);
+void _st_container_remove_actor     (ClutterContainer  *container,
+                                     ClutterActor      *actor,
+                                     GList            **children);
+void _st_container_foreach          (ClutterContainer  *container,
+                                     ClutterCallback    callback,
+                                     gpointer           user_data,
+                                     GList            **children);
+void _st_container_raise            (ClutterContainer  *container,
+                                     ClutterActor      *actor,
+                                     ClutterActor      *sibling,
+                                     GList            **children);
+void _st_container_lower            (ClutterContainer  *container,
+                                     ClutterActor      *actor,
+                                     ClutterActor      *sibling,
+                                     GList            **children);
+void _st_container_sort_depth_order (ClutterContainer  *container,
+                                     GList            **children);
+
 #endif /* __ST_PRIVATE_H__ */
diff --git a/src/st/st-table.c b/src/st/st-table.c
index 878af0f..c79a9ef 100644
--- a/src/st/st-table.c
+++ b/src/st/st-table.c
@@ -64,7 +64,7 @@ enum
 
 struct _StTablePrivate
 {
-  GSList *children;
+  GList  *children;
 
   gint    col_spacing;
   gint    row_spacing;
@@ -89,11 +89,11 @@ struct _StTablePrivate
   guint   homogeneous : 1;
 };
 
-static void st_container_iface_init (ClutterContainerIface *iface);
+static void st_table_container_iface_init (ClutterContainerIface *iface);
 
 G_DEFINE_TYPE_WITH_CODE (StTable, st_table, ST_TYPE_WIDGET,
                          G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
-                                                st_container_iface_init));
+                                                st_table_container_iface_init));
 
 
 
@@ -101,95 +101,72 @@ G_DEFINE_TYPE_WITH_CODE (StTable, st_table, ST_TYPE_WIDGET,
  * ClutterContainer Implementation
  */
 static void
-st_container_add_actor (ClutterContainer *container,
-                        ClutterActor     *actor)
+st_table_add_actor (ClutterContainer *container,
+                    ClutterActor     *actor)
 {
   StTablePrivate *priv = ST_TABLE (container)->priv;
 
-  clutter_actor_set_parent (actor, CLUTTER_ACTOR (container));
-
-
-  priv->children = g_slist_append (priv->children, actor);
-
-  clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
-
-  g_signal_emit_by_name (container, "actor-added", actor);
+  _st_container_add_actor (container, actor, &priv->children);
 }
 
 static void
-st_container_remove_actor (ClutterContainer *container,
-                           ClutterActor     *actor)
+st_table_remove_actor (ClutterContainer *container,
+                       ClutterActor     *actor)
 {
   StTablePrivate *priv = ST_TABLE (container)->priv;
 
-  GSList *item = NULL;
-
-  item = g_slist_find (priv->children, actor);
-
-  if (item == NULL)
-    {
-      g_warning ("Widget of type '%s' is not a child of container of type '%s'",
-                 g_type_name (G_OBJECT_TYPE (actor)),
-                 g_type_name (G_OBJECT_TYPE (container)));
-      return;
-    }
-
-  g_object_ref (actor);
-
-  priv->children = g_slist_delete_link (priv->children, item);
-  clutter_actor_unparent (actor);
-
-  clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
-
-  g_signal_emit_by_name (container, "actor-removed", actor);
-
-  g_object_unref (actor);
+  _st_container_remove_actor (container, actor, &priv->children);
 }
 
 static void
-st_container_foreach (ClutterContainer *container,
-                      ClutterCallback   callback,
-                      gpointer          callback_data)
+st_table_foreach (ClutterContainer *container,
+                  ClutterCallback   callback,
+                  gpointer          callback_data)
 {
   StTablePrivate *priv = ST_TABLE (container)->priv;
 
-  g_slist_foreach (priv->children, (GFunc) callback, callback_data);
+  _st_container_foreach (container, callback, callback_data,
+                         &priv->children);
 }
 
 static void
-st_container_lower (ClutterContainer *container,
-                    ClutterActor     *actor,
-                    ClutterActor     *sibling)
+st_table_lower (ClutterContainer *container,
+                ClutterActor     *actor,
+                ClutterActor     *sibling)
 {
-  /* XXX: not yet implemented */
-  g_warning ("%s() not yet implemented", __FUNCTION__);
+  StTablePrivate *priv = ST_TABLE (container)->priv;
+
+  _st_container_lower (container, actor, sibling, &priv->children);
 }
 
 static void
-st_container_raise (ClutterContainer *container,
-                    ClutterActor     *actor,
-                    ClutterActor     *sibling)
+st_table_raise (ClutterContainer *container,
+                ClutterActor     *actor,
+                ClutterActor     *sibling)
 {
-  /* XXX: not yet implemented */
-  g_warning ("%s() not yet implemented", __FUNCTION__);
+  StTablePrivate *priv = ST_TABLE (container)->priv;
+
+  _st_container_raise (container, actor, sibling, &priv->children);
 }
 
 static void
-st_container_sort_depth_order (ClutterContainer *container)
+st_table_sort_depth_order (ClutterContainer *container)
 {
-  /* XXX: not yet implemented */
-  g_warning ("%s() not yet implemented", __FUNCTION__);
+  StTablePrivate *priv = ST_TABLE (container)->priv;
+
+  _st_container_sort_depth_order (container, &priv->children);
 }
 
 static void
-st_container_iface_init (ClutterContainerIface *iface)
+st_table_container_iface_init (ClutterContainerIface *iface)
 {
-  iface->add = st_container_add_actor;
-  iface->remove = st_container_remove_actor;
-  iface->foreach = st_container_foreach;
-  iface->lower = st_container_lower;
-  iface->raise = st_container_raise;
-  iface->sort_depth_order = st_container_sort_depth_order;
+  iface->add = st_table_add_actor;
+  iface->remove = st_table_remove_actor;
+  iface->foreach = st_table_foreach;
+  iface->lower = st_table_lower;
+  iface->raise = st_table_raise;
+  iface->sort_depth_order = st_table_sort_depth_order;
+
   iface->child_meta_type = ST_TYPE_TABLE_CHILD;
 }
 
@@ -283,7 +260,7 @@ st_table_homogeneous_allocate (ClutterActor          *self,
                                const ClutterActorBox *content_box,
                                gboolean               flags)
 {
-  GSList *list;
+  GList *list;
   gfloat col_width, row_height;
   gint row_spacing, col_spacing;
   StTablePrivate *priv = ST_TABLE (self)->priv;
@@ -299,7 +276,7 @@ st_table_homogeneous_allocate (ClutterActor          *self,
                 - (row_spacing * (priv->n_rows - 1)))
                / priv->n_rows;
 
-  for (list = priv->children; list; list = g_slist_next (list))
+  for (list = priv->children; list; list = list->next)
     {
       gint row, col, row_span, col_span;
       StTableChild *meta;
@@ -357,7 +334,7 @@ st_table_calculate_col_widths (StTable *table,
   gboolean *is_expand_col;
   gint extra_col_width, n_expanded_cols = 0, expanded_cols = 0;
   gint *pref_widths, *min_widths;
-  GSList *list;
+  GList *list;
 
   g_array_set_size (priv->is_expand_col, 0);
   g_array_set_size (priv->is_expand_col, priv->n_cols);
@@ -371,7 +348,7 @@ st_table_calculate_col_widths (StTable *table,
   g_array_set_size (priv->min_widths, priv->n_cols);
   min_widths = (gint *) priv->min_widths->data;
 
-  for (list = priv->children; list; list = g_slist_next (list))
+  for (list = priv->children; list; list = list->next)
     {
       gint row, col;
       gfloat w_min, w_pref;
@@ -459,7 +436,7 @@ st_table_calculate_row_heights (StTable *table,
                                 gint   * col_widths)
 {
   StTablePrivate *priv = ST_TABLE (table)->priv;
-  GSList *list;
+  GList *list;
   gint *is_expand_row, *min_heights, *pref_heights, *row_heights, extra_row_height;
   gint i, total_min_height;
   gint expanded_rows = 0;
@@ -482,7 +459,7 @@ st_table_calculate_row_heights (StTable *table,
   pref_heights = (gboolean *) priv->pref_heights->data;
 
   /* calculate minimum row widths and column heights */
-  for (list = priv->children; list; list = g_slist_next (list))
+  for (list = priv->children; list; list = list->next)
     {
       gint row, col, cell_width;
       gfloat h_min, h_pref;
@@ -633,7 +610,7 @@ st_table_preferred_allocate (ClutterActor          *self,
                              const ClutterActorBox *content_box,
                              gboolean               flags)
 {
-  GSList *list;
+  GList *list;
   gint row_spacing, col_spacing;
   gint i;
   gint *col_widths, *row_heights;
@@ -659,7 +636,7 @@ st_table_preferred_allocate (ClutterActor          *self,
   ltr = (st_widget_get_direction (ST_WIDGET (self)) == ST_TEXT_DIRECTION_LTR);
 
 
-  for (list = priv->children; list; list = g_slist_next (list))
+  for (list = priv->children; list; list = list->next)
     {
       gint row, col, row_span, col_span;
       gint col_width, row_height;
@@ -803,7 +780,7 @@ st_table_get_preferred_width (ClutterActor *self,
   gfloat total_min_width, total_pref_width;
   StTablePrivate *priv = ST_TABLE (self)->priv;
   StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self));
-  GSList *list;
+  GList *list;
   gint i;
 
   if (priv->n_cols < 1)
@@ -825,7 +802,7 @@ st_table_get_preferred_width (ClutterActor *self,
   pref_widths = (gint *) priv->pref_widths->data;
 
   /* calculate minimum row widths */
-  for (list = priv->children; list; list = g_slist_next (list))
+  for (list = priv->children; list; list = list->next)
     {
       gint col, col_span;
       gfloat w_min, w_pref;
@@ -878,7 +855,7 @@ st_table_get_preferred_height (ClutterActor *self,
   gfloat total_min_height, total_pref_height;
   StTablePrivate *priv = ST_TABLE (self)->priv;
   StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self));
-  GSList *list;
+  GList *list;
   gint i;
   gint *min_widths;
 
@@ -906,7 +883,7 @@ st_table_get_preferred_height (ClutterActor *self,
   pref_heights = (gint *) priv->pref_heights->data;
 
   /* calculate minimum row heights */
-  for (list = priv->children; list; list = g_slist_next (list))
+  for (list = priv->children; list; list = list->next)
     {
       gint row, col, col_span, cell_width, row_span;
       gfloat min, pref;
@@ -961,12 +938,12 @@ static void
 st_table_paint (ClutterActor *self)
 {
   StTablePrivate *priv = ST_TABLE (self)->priv;
-  GSList *list;
+  GList *list;
 
   /* make sure the background gets painted first */
   CLUTTER_ACTOR_CLASS (st_table_parent_class)->paint (self);
 
-  for (list = priv->children; list; list = g_slist_next (list))
+  for (list = priv->children; list; list = list->next)
     {
       ClutterActor *child = CLUTTER_ACTOR (list->data);
       if (CLUTTER_ACTOR_IS_VISIBLE (child))
@@ -979,12 +956,12 @@ st_table_pick (ClutterActor       *self,
                const ClutterColor *color)
 {
   StTablePrivate *priv = ST_TABLE (self)->priv;
-  GSList *list;
+  GList *list;
 
   /* Chain up so we get a bounding box painted (if we are reactive) */
   CLUTTER_ACTOR_CLASS (st_table_parent_class)->pick (self, color);
 
-  for (list = priv->children; list; list = g_slist_next (list))
+  for (list = priv->children; list; list = list->next)
     {
       if (CLUTTER_ACTOR_IS_VISIBLE (list->data))
         clutter_actor_paint (CLUTTER_ACTOR (list->data));
@@ -995,7 +972,7 @@ static void
 st_table_show_all (ClutterActor *table)
 {
   StTablePrivate *priv = ST_TABLE (table)->priv;
-  GSList *l;
+  GList *l;
 
   for (l = priv->children; l; l = l->next)
     clutter_actor_show_all (CLUTTER_ACTOR (l->data));
@@ -1007,7 +984,7 @@ static void
 st_table_hide_all (ClutterActor *table)
 {
   StTablePrivate *priv = ST_TABLE (table)->priv;
-  GSList *l;
+  GList *l;
 
   clutter_actor_hide (table);
 



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