[glade3] * gladeui/glade-signal.c: Fire a warning when signal class is not found for signal read in by gl



commit ad347d832d22fc688e5d409cc606c218c7eeae98
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Wed Jan 12 17:54:59 2011 +0900

    	* gladeui/glade-signal.c: Fire a warning when signal class is not found for signal
    	  read in by glade_signal_read from the xml (this happens because GTK+-3 removes some
    	  signals).

 ChangeLog              |    4 ++++
 gladeui/glade-signal.c |   28 ++++++++++++++++++----------
 2 files changed, 22 insertions(+), 10 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index e3121fa..40d6b55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,10 @@
 
 	* gladeui/glade-widget.c: Fixed access of NULL project at glade_widget_show/hide time.
 
+	* gladeui/glade-signal.c: Fire a warning when signal class is not found for signal
+	  read in by glade_signal_read from the xml (this happens because GTK+-3 removes some
+	  signals).
+
 2011-01-10  Tristan Van Berkom <tristanvb openismus com>
 
 	* gladeui/glade-signal-model.[ch]:
diff --git a/gladeui/glade-signal.c b/gladeui/glade-signal.c
index 4cdf7c5..73efb99 100644
--- a/gladeui/glade-signal.c
+++ b/gladeui/glade-signal.c
@@ -363,7 +363,8 @@ glade_signal_write (GladeSignal * signal,
 GladeSignal *
 glade_signal_read (GladeXmlNode * node, GladeWidgetAdaptor* adaptor)
 {
-  GladeSignal *signal;
+  GladeSignal *signal = NULL;
+  GladeSignalClass *signal_class;
   gchar *name, *handler, *userdata;
 
   g_return_val_if_fail (glade_xml_node_verify_silent
@@ -383,15 +384,22 @@ glade_signal_read (GladeXmlNode * node, GladeWidgetAdaptor* adaptor)
       return NULL;
     }
 
-
-  userdata = glade_xml_get_property_string (node, GLADE_XML_TAG_OBJECT);
-
-  signal = 
-    glade_signal_new (glade_widget_adaptor_get_signal_class (adaptor, name),
-                      handler, userdata,
-                      glade_xml_get_property_boolean (node, GLADE_XML_TAG_AFTER, FALSE),
-                      glade_xml_get_property_boolean (node, GLADE_XML_TAG_SWAPPED,
-                                                      userdata != NULL));
+  userdata     = glade_xml_get_property_string (node, GLADE_XML_TAG_OBJECT);
+  signal_class = glade_widget_adaptor_get_signal_class (adaptor, name);
+
+  if (signal_class)
+    signal = 
+      glade_signal_new (signal_class,
+			handler, userdata,
+			glade_xml_get_property_boolean (node, GLADE_XML_TAG_AFTER, FALSE),
+			glade_xml_get_property_boolean (node, GLADE_XML_TAG_SWAPPED,
+							userdata != NULL));
+  else
+    {
+      /* XXX These errors should be collected and reported to the user */
+      g_warning ("No signal %s was found for class %s, skipping\n", 
+		 name, glade_widget_adaptor_get_name (adaptor));
+    }
 	
   g_free (name);
   g_free (handler);



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