[gtk+] Fire a warning if there are any handlers connected to the deprecated "size-request" signal.



commit c41ec57fb04a99cbce41f93cab1b990166e417e6
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Thu Oct 28 16:00:19 2010 +0900

    Fire a warning if there are any handlers connected to the deprecated "size-request" signal.

 gtk/gtksizerequest.c |    7 +++++++
 gtk/gtkwidget.c      |    5 ++++-
 2 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c
index 9b467b4..ba94aeb 100644
--- a/gtk/gtksizerequest.c
+++ b/gtk/gtksizerequest.c
@@ -104,6 +104,8 @@ get_cached_size (SizeRequestCache  *cache,
   return FALSE;
 }
 
+
+extern guint size_request_signal_id;
 static void
 do_size_request (GtkWidget      *widget,
 		 GtkRequisition *requisition)
@@ -115,6 +117,11 @@ do_size_request (GtkWidget      *widget,
 	       "will be removed in the next release",
 	       G_OBJECT_TYPE_NAME (widget));
 
+  if (g_signal_has_handler_pending (widget, size_request_signal_id, 0, TRUE))
+    g_warning ("A %s (%p) has handler(s) connected to the GtkWidgetClass::size-request signal which is "
+	       "deprecated and will be removed in the next release",
+	       G_OBJECT_TYPE_NAME (widget), widget);
+
   /* Now we dont bother caching the deprecated "size-request" returns,
    * just unconditionally invoke here just in case we run into legacy stuff */
   gtk_widget_ensure_style (widget);
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index b37452f..34cf229 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -710,6 +710,9 @@ static guint            composite_child_stack = 0;
 static GtkTextDirection gtk_default_direction = GTK_TEXT_DIR_LTR;
 static GParamSpecPool  *style_property_spec_pool = NULL;
 
+/* XXX Temporarily here to fire warnings from gtksizerequest.c */
+guint size_request_signal_id = 0;
+
 static GQuark		quark_property_parser = 0;
 static GQuark		quark_aux_info = 0;
 static GQuark		quark_accel_path = 0;
@@ -1467,7 +1470,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
    * @widget: the object which received the signal.
    * @requisition:
    */
-  widget_signals[SIZE_REQUEST] =
+  size_request_signal_id = widget_signals[SIZE_REQUEST] =
     g_signal_new (I_("size-request"),
 		  G_TYPE_FROM_CLASS (gobject_class),
 		  G_SIGNAL_RUN_FIRST,



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