summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.van.berkom@gmail.com>2011-01-10 15:54:26 +0900
committerTristan Van Berkom <tristan.van.berkom@gmail.com>2011-01-10 15:57:01 +0900
commitdb4732e826b0588b77b16ae62646bd08c6e86b67 (patch)
treece74078c4b101f25dcc3b8fe2a179bc575c299de
parent054032caa39d962dcbaa635dfe636573a2619e6b (diff)
downloadglade-db4732e826b0588b77b16ae62646bd08c6e86b67.tar.gz
* 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.
-rw-r--r--ChangeLog3
-rw-r--r--plugins/gtk+/glade-gtk.c31
-rw-r--r--plugins/gtk+/gtk+.xml.in3
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 <tristanvb@openismus.com>
* 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</_tooltip>
<glade-widget-class name="GtkTreeView" generic-name="treeview" _title="Tree View">
- <post-create-function>empty</post-create-function>
+ <post-create-function>glade_gtk_treeview_post_create</post-create-function>
<child-set-property-function>glade_gtk_treeview_set_child_property</child-set-property-function>
<child-get-property-function>glade_gtk_treeview_get_child_property</child-get-property-function>
<get-children-function>glade_gtk_treeview_get_children</get-children-function>
+ <get-internal-child-function>glade_gtk_treeview_get_internal_child</get-internal-child-function>
<add-child-function>glade_gtk_treeview_add_child</add-child-function>
<replace-child-function>glade_gtk_treeview_replace_child</replace-child-function>
<remove-child-function>glade_gtk_treeview_remove_child</remove-child-function>