[Xfce4-commits] r27035 - in libxfcegui4/trunk: . glade
Brian Tarricone
kelnos at xfce.org
Thu Jun 5 09:10:40 CEST 2008
Author: kelnos
Date: 2008-06-05 07:10:40 +0000 (Thu, 05 Jun 2008)
New Revision: 27035
Modified:
libxfcegui4/trunk/ChangeLog
libxfcegui4/trunk/glade/libglade-xfce4.c
Log:
override build_children for XfceTitledDialog so button reponses and signals
get set properly
Modified: libxfcegui4/trunk/ChangeLog
===================================================================
--- libxfcegui4/trunk/ChangeLog 2008-06-05 07:10:27 UTC (rev 27034)
+++ libxfcegui4/trunk/ChangeLog 2008-06-05 07:10:40 UTC (rev 27035)
@@ -1,5 +1,10 @@
2008-06-05 Brian Tarricone <bjt23 at cornell.edu>
+ * glade/libglade-xfce4.c: override build_children for XfceTitledDialog
+ so button reponses and signals get set properly
+
+2008-06-05 Brian Tarricone <bjt23 at cornell.edu>
+
* autogen.sh: use git-svn to get revision number
2008-06-04 Brian Tarricone <bjt23 at cornell.edu>
Modified: libxfcegui4/trunk/glade/libglade-xfce4.c
===================================================================
--- libxfcegui4/trunk/glade/libglade-xfce4.c 2008-06-05 07:10:27 UTC (rev 27034)
+++ libxfcegui4/trunk/glade/libglade-xfce4.c 2008-06-05 07:10:40 UTC (rev 27035)
@@ -33,6 +33,41 @@
#include <libxfcegui4/libxfcegui4.h>
+static void
+titled_dialog_build_children(GladeXML *xml,
+ GtkWidget *widget,
+ GladeWidgetInfo *info)
+{
+ GList *children, *l;
+ GtkContainer *action_area;
+
+ glade_standard_build_children(xml, widget, info);
+
+ action_area = GTK_CONTAINER(GTK_DIALOG(widget)->action_area);
+ if(!action_area)
+ return;
+
+ /* we have to repack all the widgets in the action area so they get
+ * their response ids set properly, and so they actually emit the
+ * response signal when activated */
+
+ children = gtk_container_get_children(action_area);
+ for(l = children; l; l = l->next) {
+ g_object_ref(G_OBJECT(l->data));
+ gtk_container_remove(action_area, GTK_WIDGET(l->data));
+ }
+
+ for(l = children; l; l = l->next) {
+ g_debug("adding button: %s", gtk_button_get_label(GTK_BUTTON(l->data)));
+ gtk_dialog_add_action_widget(GTK_DIALOG(widget), GTK_WIDGET(l->data),
+ GPOINTER_TO_INT(g_object_steal_data(G_OBJECT(l->data),
+ "response_id")));
+ g_object_unref(G_OBJECT(l->data));
+ }
+
+ g_list_free(children);
+}
+
static GtkWidget *
titled_dialog_find_internal_child(GladeXML *xml,
GtkWidget *parent,
@@ -52,8 +87,8 @@
glade_register_widget(XFCE_TYPE_APP_MENU_ITEM, NULL, NULL, NULL);
glade_register_widget(XFCE_TYPE_HEADING, NULL, NULL, NULL);
glade_register_widget(XFCE_TYPE_SCALED_IMAGE, NULL, NULL, NULL);
- glade_register_widget(XFCE_TYPE_TITLED_DIALOG, glade_standard_build_widget,
- glade_standard_build_children,
+ glade_register_widget(XFCE_TYPE_TITLED_DIALOG, NULL,
+ titled_dialog_build_children,
titled_dialog_find_internal_child);
glade_provide("xfce4");
More information about the Xfce4-commits
mailing list