[mutter] clutter/box-layout: Remove child meta



commit 11f224f4b0404dac1d219b69a75e9d273c79dcae
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu May 21 05:43:11 2020 +0200

    clutter/box-layout: Remove child meta
    
    ClutterBoxLayout's layout policy of using the generic ClutterActor
    align/expand properties for children that are expanded and a custom
    meta otherwise is confusing, in particular as the x-fill/y-fill
    defaults don't match the default CLUTTER_ACTOR_ALIGN_FILL align.
    
    StBoxLayout's own custom child meta (which was deprecated last
    cycle) is probably the only consumer. And luckily, the St meta
    uses different x-fill/y-fill default that match the ClutterActor
    defaults, so removing it will not affect code that doesn't use
    the deprecated properties themselves.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1265

 clutter/clutter/clutter-box-layout.c | 358 +----------------------------------
 1 file changed, 6 insertions(+), 352 deletions(-)
---
diff --git a/clutter/clutter/clutter-box-layout.c b/clutter/clutter/clutter-box-layout.c
index a61619cc4..bcb339bba 100644
--- a/clutter/clutter/clutter-box-layout.c
+++ b/clutter/clutter/clutter-box-layout.c
@@ -64,13 +64,6 @@
 #include "clutter-private.h"
 #include "clutter-types.h"
 
-#define CLUTTER_TYPE_BOX_CHILD          (clutter_box_child_get_type ())
-#define CLUTTER_BOX_CHILD(obj)          (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_BOX_CHILD, 
ClutterBoxChild))
-#define CLUTTER_IS_BOX_CHILD(obj)       (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_BOX_CHILD))
-
-typedef struct _ClutterBoxChild         ClutterBoxChild;
-typedef struct _ClutterLayoutMetaClass  ClutterBoxChildClass;
-
 struct _ClutterBoxLayoutPrivate
 {
   ClutterContainer *container;
@@ -86,31 +79,6 @@ struct _ClutterBoxLayoutPrivate
   guint is_homogeneous : 1;
 };
 
-struct _ClutterBoxChild
-{
-  ClutterLayoutMeta parent_instance;
-
-  ClutterBoxAlignment x_align;
-  ClutterBoxAlignment y_align;
-
-  guint x_fill              : 1;
-  guint y_fill              : 1;
-  guint expand              : 1;
-};
-
-enum
-{
-  PROP_CHILD_0,
-
-  PROP_CHILD_X_ALIGN,
-  PROP_CHILD_Y_ALIGN,
-  PROP_CHILD_X_FILL,
-  PROP_CHILD_Y_FILL,
-  PROP_CHILD_EXPAND,
-
-  PROP_CHILD_LAST
-};
-
 enum
 {
   PROP_0,
@@ -125,12 +93,6 @@ enum
 
 static GParamSpec *obj_props[PROP_LAST] = { NULL, };
 
-GType clutter_box_child_get_type (void);
-
-G_DEFINE_TYPE (ClutterBoxChild,
-               clutter_box_child,
-               CLUTTER_TYPE_LAYOUT_META)
-
 G_DEFINE_TYPE_WITH_PRIVATE (ClutterBoxLayout,
                             clutter_box_layout,
                             CLUTTER_TYPE_LAYOUT_MANAGER)
@@ -152,270 +114,6 @@ static void count_expand_children         (ClutterLayoutManager *layout,
                                           gint                 *visible_children,
                                           gint                 *expand_children);
 
-/*
- * ClutterBoxChild
- */
-
-static void
-box_child_set_align (ClutterBoxChild     *self,
-                     ClutterBoxAlignment  x_align,
-                     ClutterBoxAlignment  y_align)
-{
-  gboolean x_changed = FALSE, y_changed = FALSE;
-
-  if (self->x_align != x_align)
-    {
-      self->x_align = x_align;
-
-      x_changed = TRUE;
-    }
-
-  if (self->y_align != y_align)
-    {
-      self->y_align = y_align;
-
-      y_changed = TRUE;
-    }
-
-  if (x_changed || y_changed)
-    {
-      ClutterLayoutManager *layout;
-
-      layout = clutter_layout_meta_get_manager (CLUTTER_LAYOUT_META (self));
-
-      clutter_layout_manager_layout_changed (layout);
-
-      if (x_changed)
-        g_object_notify (G_OBJECT (self), "x-align");
-
-      if (y_changed)
-        g_object_notify (G_OBJECT (self), "y-align");
-    }
-}
-
-static void
-box_child_set_fill (ClutterBoxChild *self,
-                    gboolean         x_fill,
-                    gboolean         y_fill)
-{
-  gboolean x_changed = FALSE, y_changed = FALSE;
-
-  if (self->x_fill != x_fill)
-    {
-      self->x_fill = x_fill;
-
-      x_changed = TRUE;
-    }
-
-  if (self->y_fill != y_fill)
-    {
-      self->y_fill = y_fill;
-
-      y_changed = TRUE;
-    }
-
-  if (x_changed || y_changed)
-    {
-      ClutterLayoutManager *layout;
-
-      layout = clutter_layout_meta_get_manager (CLUTTER_LAYOUT_META (self));
-
-      clutter_layout_manager_layout_changed (layout);
-
-      if (x_changed)
-        g_object_notify (G_OBJECT (self), "x-fill");
-
-      if (y_changed)
-        g_object_notify (G_OBJECT (self), "y-fill");
-    }
-}
-
-static void
-box_child_set_expand (ClutterBoxChild *self,
-                      gboolean         expand)
-{
-  if (self->expand != expand)
-    {
-      ClutterLayoutManager *layout;
-
-      self->expand = expand;
-
-      layout = clutter_layout_meta_get_manager (CLUTTER_LAYOUT_META (self));
-
-      clutter_layout_manager_layout_changed (layout);
-
-      g_object_notify (G_OBJECT (self), "expand");
-    }
-}
-
-static void
-clutter_box_child_set_property (GObject      *gobject,
-                                guint         prop_id,
-                                const GValue *value,
-                                GParamSpec   *pspec)
-{
-  ClutterBoxChild *self = CLUTTER_BOX_CHILD (gobject);
-
-  switch (prop_id)
-    {
-    case PROP_CHILD_X_ALIGN:
-      box_child_set_align (self,
-                           g_value_get_enum (value),
-                           self->y_align);
-      break;
-
-    case PROP_CHILD_Y_ALIGN:
-      box_child_set_align (self,
-                           self->x_align,
-                           g_value_get_enum (value));
-      break;
-
-    case PROP_CHILD_X_FILL:
-      box_child_set_fill (self,
-                          g_value_get_boolean (value),
-                          self->y_fill);
-      break;
-
-    case PROP_CHILD_Y_FILL:
-      box_child_set_fill (self,
-                          self->x_fill,
-                          g_value_get_boolean (value));
-      break;
-
-    case PROP_CHILD_EXPAND:
-      box_child_set_expand (self, g_value_get_boolean (value));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-clutter_box_child_get_property (GObject    *gobject,
-                                guint       prop_id,
-                                GValue     *value,
-                                GParamSpec *pspec)
-{
-  ClutterBoxChild *self = CLUTTER_BOX_CHILD (gobject);
-
-  switch (prop_id)
-    {
-    case PROP_CHILD_X_ALIGN:
-      g_value_set_enum (value, self->x_align);
-      break;
-
-    case PROP_CHILD_Y_ALIGN:
-      g_value_set_enum (value, self->y_align);
-      break;
-
-    case PROP_CHILD_X_FILL:
-      g_value_set_boolean (value, self->x_fill);
-      break;
-
-    case PROP_CHILD_Y_FILL:
-      g_value_set_boolean (value, self->y_fill);
-      break;
-
-    case PROP_CHILD_EXPAND:
-      g_value_set_boolean (value, self->expand);
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-clutter_box_child_class_init (ClutterBoxChildClass *klass)
-{
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-  GParamSpec *pspec;
-
-  gobject_class->set_property = clutter_box_child_set_property;
-  gobject_class->get_property = clutter_box_child_get_property;
-
-  pspec = g_param_spec_boolean ("expand",
-                                P_("Expand"),
-                                P_("Allocate extra space for the child"),
-                                FALSE,
-                                CLUTTER_PARAM_READWRITE);
-  g_object_class_install_property (gobject_class, PROP_CHILD_EXPAND, pspec);
-
-  pspec = g_param_spec_boolean ("x-fill",
-                                P_("Horizontal Fill"),
-                                P_("Whether the child should receive priority "
-                                   "when the container is allocating spare space "
-                                   "on the horizontal axis"),
-                                FALSE,
-                                CLUTTER_PARAM_READWRITE);
-  g_object_class_install_property (gobject_class, PROP_CHILD_X_FILL, pspec);
-
-  pspec = g_param_spec_boolean ("y-fill",
-                                P_("Vertical Fill"),
-                                P_("Whether the child should receive priority "
-                                   "when the container is allocating spare space "
-                                   "on the vertical axis"),
-                                FALSE,
-                                CLUTTER_PARAM_READWRITE);
-  g_object_class_install_property (gobject_class, PROP_CHILD_Y_FILL, pspec);
-
-  pspec = g_param_spec_enum ("x-align",
-                             P_("Horizontal Alignment"),
-                             P_("Horizontal alignment of the actor within "
-                                "the cell"),
-                             CLUTTER_TYPE_BOX_ALIGNMENT,
-                             CLUTTER_BOX_ALIGNMENT_CENTER,
-                             CLUTTER_PARAM_READWRITE);
-  g_object_class_install_property (gobject_class, PROP_CHILD_X_ALIGN, pspec);
-
-  pspec = g_param_spec_enum ("y-align",
-                             P_("Vertical Alignment"),
-                             P_("Vertical alignment of the actor within "
-                                "the cell"),
-                             CLUTTER_TYPE_BOX_ALIGNMENT,
-                             CLUTTER_BOX_ALIGNMENT_CENTER,
-                             CLUTTER_PARAM_READWRITE);
-  g_object_class_install_property (gobject_class, PROP_CHILD_Y_ALIGN, pspec);
-}
-
-static void
-clutter_box_child_init (ClutterBoxChild *self)
-{
-  self->x_align = CLUTTER_BOX_ALIGNMENT_CENTER;
-  self->y_align = CLUTTER_BOX_ALIGNMENT_CENTER;
-
-  self->x_fill = self->y_fill = FALSE;
-
-  self->expand = FALSE;
-}
-
-static gdouble
-get_box_alignment_factor (ClutterBoxAlignment alignment)
-{
-  switch (alignment)
-    {
-    case CLUTTER_BOX_ALIGNMENT_CENTER:
-      return 0.5;
-
-    case CLUTTER_BOX_ALIGNMENT_START:
-      return 0.0;
-
-    case CLUTTER_BOX_ALIGNMENT_END:
-      return 1.0;
-    }
-
-  return 0.0;
-}
-
-static GType
-clutter_box_layout_get_child_meta_type (ClutterLayoutManager *manager)
-{
-  return CLUTTER_TYPE_BOX_CHILD;
-}
-
 static void
 clutter_box_layout_set_container (ClutterLayoutManager *layout,
                                   ClutterContainer     *container)
@@ -647,16 +345,10 @@ get_preferred_size_for_opposite_orientation (ClutterBoxLayout   *self,
   clutter_actor_iter_init (&iter, container);
   while (clutter_actor_iter_next (&iter, &child))
     {
-      ClutterLayoutMeta *meta;
-      ClutterBoxChild   *box_child;
-
       /* If widget is not visible, skip it. */
       if (!clutter_actor_is_visible (child))
         continue;
 
-      meta      = clutter_layout_manager_get_child_meta (layout, real_container, child);
-      box_child = CLUTTER_BOX_CHILD (meta);
-
       if (priv->is_homogeneous)
        {
          sizes[i].minimum_size = extra;
@@ -669,7 +361,7 @@ get_preferred_size_for_opposite_orientation (ClutterBoxLayout   *self,
        }
       else
        {
-          if (clutter_actor_needs_expand (child, priv->orientation) || box_child->expand)
+          if (clutter_actor_needs_expand (child, priv->orientation))
             {
               sizes[i].minimum_size += extra;
 
@@ -717,32 +409,13 @@ allocate_box_child (ClutterBoxLayout       *self,
                     ClutterActor           *child,
                     ClutterActorBox        *child_box)
 {
-  ClutterBoxChild *box_child;
-  ClutterLayoutMeta *meta;
-
-  meta = clutter_layout_manager_get_child_meta (CLUTTER_LAYOUT_MANAGER (self),
-                                                container,
-                                                child);
-  box_child = CLUTTER_BOX_CHILD (meta);
-
   CLUTTER_NOTE (LAYOUT, "Allocation for %s { %.2f, %.2f, %.2f, %.2f }",
                 _clutter_actor_get_debug_name (child),
                 child_box->x1, child_box->y1,
                 child_box->x2 - child_box->x1,
                 child_box->y2 - child_box->y1);
 
-  /* call allocate() instead of allocate_align_fill() if the actor needs
-   * expand in either direction. this will honour the actors alignment settings
-   */
-  if (clutter_actor_needs_expand (child, CLUTTER_ORIENTATION_HORIZONTAL) ||
-      clutter_actor_needs_expand (child, CLUTTER_ORIENTATION_VERTICAL))
-    clutter_actor_allocate (child, child_box);
-  else
-    clutter_actor_allocate_align_fill (child, child_box,
-                                       get_box_alignment_factor (box_child->x_align),
-                                       get_box_alignment_factor (box_child->y_align),
-                                       box_child->x_fill,
-                                       box_child->y_fill);
+  clutter_actor_allocate (child, child_box);
 }
 
 static void
@@ -812,16 +485,9 @@ count_expand_children (ClutterLayoutManager *layout,
     {
       if (clutter_actor_is_visible (child))
         {
-          ClutterLayoutMeta *meta;
-
           *visible_children += 1;
 
-          meta = clutter_layout_manager_get_child_meta (layout,
-                                                        container,
-                                                        child);
-
-          if (clutter_actor_needs_expand (child, priv->orientation) ||
-              CLUTTER_BOX_CHILD (meta)->expand)
+          if (clutter_actor_needs_expand (child, priv->orientation))
             *expand_children += 1;
         }
     }
@@ -1099,18 +765,10 @@ clutter_box_layout_allocate (ClutterLayoutManager   *layout,
   clutter_actor_iter_init (&iter, actor);
   while (clutter_actor_iter_next (&iter, &child))
     {
-      ClutterLayoutMeta *meta;
-      ClutterBoxChild *box_child;
-
       /* If widget is not visible, skip it. */
       if (!clutter_actor_is_visible (child))
         continue;
 
-      meta = clutter_layout_manager_get_child_meta (layout,
-                                                    container,
-                                                    child);
-      box_child = CLUTTER_BOX_CHILD (meta);
-
       /* Assign the child's size. */
       if (priv->is_homogeneous)
         {
@@ -1126,8 +784,7 @@ clutter_box_layout_allocate (ClutterLayoutManager   *layout,
         {
           child_size = sizes[i].minimum_size;
 
-          if (clutter_actor_needs_expand (child, priv->orientation) ||
-              box_child->expand)
+          if (clutter_actor_needs_expand (child, priv->orientation))
             {
               child_size += extra;
 
@@ -1142,8 +799,7 @@ clutter_box_layout_allocate (ClutterLayoutManager   *layout,
       /* Assign the child's position. */
       if (priv->orientation == CLUTTER_ORIENTATION_VERTICAL)
         {
-          if (clutter_actor_needs_expand (child, priv->orientation) ||
-              box_child->expand)
+          if (clutter_actor_needs_expand (child, priv->orientation))
             {
               child_allocation.y1 = y;
               child_allocation.y2 = child_allocation.y1 + MAX (1.0, child_size);
@@ -1168,8 +824,7 @@ clutter_box_layout_allocate (ClutterLayoutManager   *layout,
         }
       else /* CLUTTER_ORIENTATION_HORIZONTAL */
         {
-          if (clutter_actor_needs_expand (child, priv->orientation) ||
-              box_child->expand)
+          if (clutter_actor_needs_expand (child, priv->orientation))
             {
               child_allocation.x1 = x;
               child_allocation.x2 = child_allocation.x1 + MAX (1.0, child_size);
@@ -1287,7 +942,6 @@ clutter_box_layout_class_init (ClutterBoxLayoutClass *klass)
   layout_class->get_preferred_height = clutter_box_layout_get_preferred_height;
   layout_class->allocate = clutter_box_layout_allocate;
   layout_class->set_container = clutter_box_layout_set_container;
-  layout_class->get_child_meta_type = clutter_box_layout_get_child_meta_type;
 
   /**
    * ClutterBoxLayout:orientation:


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