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



commit 3b40c4a6006f496e8063b5edcb17f7d2ad90605e
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 6612183ebb..1979951373 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -1474,28 +1474,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.
@@ -4075,16 +4053,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]