Hi all,

I have a problem with gtktree regarding reparenting.  When I have a gtktree that has 
tree items with subtrees, if I remove the tree from its parent and then put it back, 
the expand/collapse pixmaps on the gtkitems completely disappear rendering the tree 
unusable.  Is there a way around this as I need to be able to reparent a tree that has 
been fully initialized?  I have included a sample program that illustrates this 
behaviour.

Thanks for your time

Ian


#include <gtk/gtk.h>

GtkWidget *but, *tree, *vbox, *subtree, *item;

gint button_clicked (GtkWidget *wid, gpointer user_data)
{
        gtk_widget_ref (tree);
        gtk_container_remove (GTK_CONTAINER (vbox), tree);
        gtk_container_add (GTK_CONTAINER (vbox), tree);
        gtk_widget_unref (tree);
}

int main( int argc, char *argv[] )
{
        GtkWidget *window, *subtreeitem;
        gtk_init (&argc, &argv);
        /* a generic toplevel window */
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_signal_connect (GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC 
(gtk_main_quit), NULL);
        gtk_container_set_border_width (GTK_CONTAINER(window), 5);
        tree = gtk_tree_new();
        but = gtk_button_new_with_label ("HELLO");
        gtk_widget_show (but);
        vbox = gtk_vbox_new (FALSE, FALSE);
        gtk_widget_show (vbox);
        gtk_container_add (GTK_CONTAINER (vbox), but);
        gtk_container_add (GTK_CONTAINER (vbox), tree);
        gtk_container_add (GTK_CONTAINER(window), vbox);
        gtk_widget_show (tree);
        item = gtk_tree_item_new_with_label ("Tree item");
        gtk_tree_append (GTK_TREE(tree), item);
        gtk_widget_show (item);
        subtree = gtk_tree_new();
        subtreeitem = gtk_tree_item_new_with_label ("Sub tree item");
        gtk_tree_append (GTK_TREE(subtree), subtreeitem);
        gtk_widget_show (subtreeitem);
        gtk_tree_item_set_subtree (GTK_TREE_ITEM (item), subtree);
        gtk_widget_show (window);
        gtk_signal_connect (GTK_OBJECT (but), "clicked", GTK_SIGNAL_FUNC 
(button_clicked), NULL);
        gtk_main();
        return 0;
}

_______________________________________________
gtk-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to