[gtk/abolish-size-allocate: 17/17] widget: Drop the ::size-allocate signal



commit 56e590bd3147cdb3211fbe61d1f4cad7a392fffa
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue May 5 23:12:20 2020 -0400

    widget: Drop the ::size-allocate signal
    
    This signal is mainly used for bad things, and we
    don't want to emit signals during layout if we can
    avoid it.
    
    If you are subclassing, you should either use a
    layout manager or override the size_allocate vfunc.
    
    If you are using a GtkDrawingArea or GtkGLArea,
    use their ::resize signals to learn about size
    changes.
    
    Fixes: #2705

 gtk/gtkwidget.c | 36 ++++--------------------------------
 1 file changed, 4 insertions(+), 32 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index f873f2b4ff..b6beceb8bc 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -1485,28 +1485,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
                   NULL,
                  G_TYPE_NONE, 0);
 
-  /**
-   * GtkWidget::size-allocate:
-   * @widget: the object which received the signal.
-   * @width: the content width of the widget
-   * @height: the content height of the widget
-   * @baseline: the baseline
-   */
-  widget_signals[SIZE_ALLOCATE] =
-    g_signal_new (I_("size-allocate"),
-                 G_TYPE_FROM_CLASS (gobject_class),
-                 G_SIGNAL_RUN_FIRST,
-                 G_STRUCT_OFFSET (GtkWidgetClass, size_allocate),
-                 NULL, NULL,
-                  _gtk_marshal_VOID__INT_INT_INT,
-                 G_TYPE_NONE, 3,
-                  G_TYPE_INT,
-                  G_TYPE_INT,
-                  G_TYPE_INT);
-  g_signal_set_va_marshaller (widget_signals[SIZE_ALLOCATE],
-                              G_TYPE_FROM_CLASS (gobject_class),
-                              _gtk_marshal_VOID__INT_INT_INTv);
-
   /**
    * GtkWidget::state-flags-changed:
    * @widget: the object which received the signal.
@@ -4095,16 +4073,10 @@ gtk_widget_allocate (GtkWidget    *widget,
     }
   else
     {
-      if (g_signal_has_handler_pending (widget, widget_signals[SIZE_ALLOCATE], 0, FALSE))
-        g_signal_emit (widget, widget_signals[SIZE_ALLOCATE], 0,
-                       priv->width,
-                       priv->height,
-                       baseline);
-      else
-        GTK_WIDGET_GET_CLASS (widget)->size_allocate (widget,
-                                                      priv->width,
-                                                      priv->height,
-                                                      baseline);
+      GTK_WIDGET_GET_CLASS (widget)->size_allocate (widget,
+                                                    priv->width,
+                                                    priv->height,
+                                                    baseline);
     }
 
   /* Size allocation is god... after consulting god, no further requests or allocations are needed */


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