glade3 r2178 - in trunk: . gladeui plugins/gtk+



Author: tvb
Date: Wed Mar 25 15:31:12 2009
New Revision: 2178
URL: http://svn.gnome.org/viewvc/glade3?rev=2178&view=rev

Log:

	Fixed Mal-ordering of atk properties, signals and accelerators in
	Libglade format output.
	
	* gladeui/glade-widget.[ch]: Now export glade_widget_write_signals(),
	only write signals from the core when in builder format.

	* plugins/gtk+/glade-gtk.c: glade_gtk_widget_write_widget(), write
	properties out as "properties -> atk -> signals -> accelerators when
	in libglade format, leave signals to core when in builder format.



Modified:
   trunk/ChangeLog
   trunk/gladeui/glade-widget.c
   trunk/gladeui/glade-widget.h
   trunk/plugins/gtk+/glade-gtk.c

Modified: trunk/gladeui/glade-widget.c
==============================================================================
--- trunk/gladeui/glade-widget.c	(original)
+++ trunk/gladeui/glade-widget.c	Wed Mar 25 15:31:12 2009
@@ -3846,6 +3846,21 @@
 	}
 }
 
+void 
+glade_widget_write_signals (GladeWidget     *widget,
+			    GladeXmlContext *context,
+			    GladeXmlNode    *node)
+{
+ 	WriteSignalsInfo info;
+
+	info.context = context;
+	info.node = node;
+	g_hash_table_foreach (widget->signals,
+			      glade_widget_adaptor_write_signals,
+			      &info);
+
+}
+
 /**
  * glade_widget_write:
  * @widget: The #GladeWidget
@@ -3861,12 +3876,10 @@
 		    GladeXmlNode    *node)
 {
 	GladeXmlNode *widget_node;
-	WriteSignalsInfo info;
 	GList *l, *list;
+	GladeProjectFormat fmt = glade_project_get_format (widget->project);
 
-	widget_node = 
-		glade_xml_node_new
-		(context, GLADE_XML_TAG_WIDGET (glade_project_get_format (widget->project)));
+	widget_node = glade_xml_node_new (context, GLADE_XML_TAG_WIDGET (fmt));
 	glade_xml_node_append_child (node, widget_node);
 
 	/* Set class and id */
@@ -3880,12 +3893,11 @@
 	/* Write out widget content (properties and signals) */
 	glade_widget_adaptor_write_widget (widget->adaptor, widget, context, widget_node);
 		
-	/* Write the signals */
-	info.context = context;
-	info.node = widget_node;
-	g_hash_table_foreach (widget->signals,
-			      glade_widget_adaptor_write_signals,
-			      &info);
+	/* Write the signals strictly after all properties and before children
+	 * when in builder format
+	 */
+	if (fmt == GLADE_PROJECT_FORMAT_GTKBUILDER)
+		glade_widget_write_signals (widget, context, widget_node);
 
 	/* Write the children */
 	if ((list =

Modified: trunk/gladeui/glade-widget.h
==============================================================================
--- trunk/gladeui/glade-widget.h	(original)
+++ trunk/gladeui/glade-widget.h	Wed Mar 25 15:31:12 2009
@@ -240,6 +240,10 @@
 							     GladeXmlContext *context,
 							     GladeXmlNode    *node);
 
+void                    glade_widget_write_signals          (GladeWidget     *widget,
+							     GladeXmlContext *context,
+							     GladeXmlNode    *node);
+
 void                    glade_widget_write_placeholder      (GladeWidget     *parent,
 							     GObject         *object,
 							     GladeXmlContext *context,

Modified: trunk/plugins/gtk+/glade-gtk.c
==============================================================================
--- trunk/plugins/gtk+/glade-gtk.c	(original)
+++ trunk/plugins/gtk+/glade-gtk.c	Wed Mar 25 15:31:12 2009
@@ -1006,19 +1006,31 @@
 			       GladeXmlContext    *context,
 			       GladeXmlNode       *node)
 {
-	if (!glade_xml_node_verify
-	    (node, GLADE_XML_TAG_WIDGET (glade_project_get_format (widget->project))))
+ 	GladeProjectFormat  fmt;
+
+	fmt = glade_project_get_format (widget->project);
+
+	if (!glade_xml_node_verify (node, GLADE_XML_TAG_WIDGET (fmt)))
 		return;
 
 	/* First chain up and read in all the normal properties.. */
         GWA_GET_CLASS (G_TYPE_OBJECT)->write_widget (adaptor, widget, context, node);
 
-	/* Write accelerators */
-	glade_gtk_widget_write_accels (widget, context, node);
-
-	/* Write atk props */
-	glade_gtk_widget_write_atk_props (widget, context, node);
 
+	/* in Libglade the order must be Properties, Atk, Signals, Accels. 
+	 * in builder it doesnt matter so long as signals are after properties
+	 * and before objects.
+	 */
+	if (fmt == GLADE_PROJECT_FORMAT_LIBGLADE)
+	{
+ 		glade_gtk_widget_write_atk_props (widget, context, node);
+		glade_widget_write_signals (widget, context, node);
+		glade_gtk_widget_write_accels (widget, context, node);
+	} else {
+		/* The core takes care of signals in GtkBuilder format */
+		glade_gtk_widget_write_accels (widget, context, node);		
+ 		glade_gtk_widget_write_atk_props (widget, context, node);
+	}
 }
 
 



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