From db4732e826b0588b77b16ae62646bd08c6e86b67 Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Mon, 10 Jan 2011 15:54:26 +0900 Subject: * plugins/gtk+/gtk+.xml.in, plugins/gtk+/glade-gtk.c: Expose internal GtkTreeSelection child of GtkTreeView so that "changed" signal can be connected to. Fixes bug 383766. --- ChangeLog | 3 +++ plugins/gtk+/glade-gtk.c | 31 +++++++++++++++++++++++++++++-- plugins/gtk+/gtk+.xml.in | 3 ++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4effd74e..4b0d5547 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ * gladeui/glade-widget.c: Dont set packing properties onto internal widgets. + * plugins/gtk+/gtk+.xml.in, plugins/gtk+/glade-gtk.c: Expose internal GtkTreeSelection + child of GtkTreeView so that "changed" signal can be connected to. Fixes bug 383766. + 2011-01-09 Tristan Van Berkom * gladeui/glade-design-layout.c: Fixed to not hide widgets when removing diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c index efe07708..56770342 100644 --- a/plugins/gtk+/glade-gtk.c +++ b/plugins/gtk+/glade-gtk.c @@ -1866,6 +1866,7 @@ glade_gtk_box_replace_child (GladeWidgetAdaptor * adaptor, GWA_GET_CLASS (GTK_TYPE_CONTAINER)->replace_child (adaptor, container, current, new_widget); + gbox = glade_widget_get_from_gobject (container); if ((gchild = glade_widget_get_from_gobject (new_widget)) != NULL) /* The "Remove Slot" operation only makes sence on placeholders, @@ -1873,7 +1874,6 @@ glade_gtk_box_replace_child (GladeWidgetAdaptor * adaptor, */ glade_widget_set_pack_action_visible (gchild, "remove_slot", FALSE); - gbox = glade_widget_get_from_gobject (container); fix_response_id_on_child (gbox, current, FALSE); fix_response_id_on_child (gbox, new_widget, TRUE); @@ -11142,6 +11142,18 @@ glade_gtk_cell_layout_action_activate_as_widget (GladeWidgetAdaptor * adaptor, /*--------------------------- GtkTreeView ---------------------------------*/ +void +glade_gtk_treeview_post_create (GladeWidgetAdaptor *adaptor, + GObject *object, + GladeCreateReason reason) +{ + GladeWidget *widget = glade_widget_get_from_gobject (object); + + glade_widget_adaptor_create_internal + (widget, G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (object))), + "selection", "treeview", FALSE, reason); +} + static void glade_gtk_treeview_launch_editor (GObject * treeview) { @@ -11259,7 +11271,22 @@ GList * glade_gtk_treeview_get_children (GladeWidgetAdaptor * adaptor, GtkTreeView * view) { - return gtk_tree_view_get_columns (view); + GList *children; + + children = gtk_tree_view_get_columns (view); + children = g_list_prepend (children, gtk_tree_view_get_selection (view)); + + return children; +} + +GObject * +glade_gtk_treeview_get_internal_child (GladeWidgetAdaptor * adaptor, + GtkTreeView *view, const gchar * name) +{ + if (strcmp (name, "selection") == 0) + return (GObject *)gtk_tree_view_get_selection (view); + + return NULL; } /* XXX FIXME: We should hide the actual "fixed-height-mode" setting from diff --git a/plugins/gtk+/gtk+.xml.in b/plugins/gtk+/gtk+.xml.in index 8124b439..d5f54984 100644 --- a/plugins/gtk+/gtk+.xml.in +++ b/plugins/gtk+/gtk+.xml.in @@ -2012,10 +2012,11 @@ embedded in another object - empty + glade_gtk_treeview_post_create glade_gtk_treeview_set_child_property glade_gtk_treeview_get_child_property glade_gtk_treeview_get_children + glade_gtk_treeview_get_internal_child glade_gtk_treeview_add_child glade_gtk_treeview_replace_child glade_gtk_treeview_remove_child -- cgit v1.2.1