gtk_widget_unparent



Seems I haven't understood gtk_widget_unparent properly. Here is what I did:

Problem: I create the GUI using Glade, amongst which is a window with a notebook
widget. I use it to display a small set of measurement data, a trace each page.
It is not previously determined how many traces there will be.

So I create a single instance of the trace page with Glade, and I need to add
"clone" pages to the notebook at runtime as needed.

My thought was to use the Glade-created "create_notebook" function to build a new
instance of the notebook widget tree, then unlink the trace page sub-tree und
relink it into the notebook that is about to be used. After doing that, that
additional instance of the notebook tree (now incomplete) won't be needed
anymore.

I figured gtk_widget_unparent would do the unlink action, as gtk_notebook_append_page
would do the relink. The additional instance of the notebook tree could be destroyed
as usual, afterwards, I thought. Somewhere I thought badly wrong. I did this in a 
loop for every data trace:

        dummy = create_notes();
        page = lookup_widget (dummy, "nb_trace_vbox");
        gtk_widget_unparent (page);
      /*  gtk_widget_destroy (dummy); */
        gtk_widget_show_all (page);
  
        sprintf (tab, "#%d", index);
        gtk_widget_show (label = gtk_label_new (tab));
        sprintf (tab, "Trace #%d", index);
        gtk_widget_show (menu = gtk_label_new (tab));
        
        gtk_notebook_append_page_menu (book, page, label, menu);

So far, it works. But it segfaults as soon as the gtk_widget_destroy is uncommented.
I could just leave dummy in place and destroy it when the shown notebook is destroyed.
Or is this fundamentally flawed, and I should do this in a different way ?


Cheers  Peter
-- 
---------------------------------------------------------------------
      Dr. Peter Rottengatter       peter rottengatter de
                                   http://www.rottengatter.de
---------------------------------------------------------------------



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