[Gtk-sharp-list] Buttons from Gtk.Stock and reparenting

Leo Spalteholz leo@thewoodpecker.ca
Mon, 3 Nov 2003 05:07:01 -0800


Ok, this is a little odd (for me anyway :))

I have a class that derives from Gtk.Button (I have some specific 
requirements for buttons such as labels that word wrap in them)  and I'm 
trying to create a button from stock and then reparent the child widget to 
my button class.  So I have the following:

    new public static OButton NewFromStock(string stockID) {
            Button b = Button.NewFromStock(stockID);
            OButton ob = new OButton();
	    // get the child and reparent it
            foreach(Alignment a in b.Children) {
                a.Reparent(ob);
                break;
            }

            return ob;
    }

Now this works (as in it displays the stock button content) but then 
immediately crashes as soon as the interface displays.

(<unknown>:1213): GLib-GObject-WARNING **: instance with invalid (NULL) 
class pointer

(<unknown>:1213): GLib-GObject-CRITICAL **: file gsignal.c: line 2490 
(g_signal_emit_valist): assertion `G_TYPE_CHECK_INSTANCE (instance)' 
failed

Unhandled Exception: System.NullReferenceException: A null value was found 
where an object instance was required
in (unmanaged) 06 GLib.Object:g_object_unref (intptr)
in <0x00004> 06 GLib.Object:g_object_unref (intptr)
in <0x0014a> 00 GLib.Object:PerformQueuedUnrefs ()
in <0x0001b> 05 GLib.Object:PerformQueuedUnrefs ()
in (unmanaged) 06 Gtk.Application:gtk_main ()
in <0x00004> 06 Gtk.Application:gtk_main ()
in <0x00007> 00 Gtk.Application:Run ()


Maybe it is choking when it tries to unref the stock Gtk.Button that I 
created which no longer has any children.

Is there something fundementally wrong with my NewFromStock method or is 
that not the problem?   Any help is greatly appreciated.. This has been 
driving me right up the wall all day.  :(

Thanks,
~leo