Hello everybody,

I use a .glade file to load all main parts of the GUI, including a few tabs. As I need the same TreeView in some of the tabs, I manually wrote a subclass, looking like this:

public class
MyListView : Gtk.ScrolledWindow
{
    private TreeView tv;

    public MyListView ()
        : base ()
    {
        tv = new TreeView ();

        // ... do TreeView initialization, populate treeview, etc.

        tv.WidthRequest = 240;
        WidthRequest = 250;

        Child = tv;
    }
}

In Glade, I have constructed a HPaned in one tab and a VBox in another tab. In the VBox I just put one label, and the HPaned I left empty on the left side.

The main program initialization is this:

    private void Init ()
    {
Glade.XML gxml = new Glade.XML ("myprogram.glade", "MainWindow", null);
        gxml.Autoconnect (this);

        /* Setup the view tree
         */
        MyListView mlv = new MyListView ();

        tab1Pane.Pack1 (mlv, true, false);
        tab2VBox.PackEnd (mlv);

        // **A
    }

Using this starts up the GUI but leaves the HPaned empty and the VBox with just the label. I tried inserting a "mlv.Show ()" and "mlv.Realize ()" at the **A marked place, but it failed, giving the error message:

(<unknown>:6496): Gtk-CRITICAL **: gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed

I am at loss about Gtk internals and did not find a single example of how to properly setup a subclassed custom widget with a glade-based application (I have used manual subclassing in non-glade gtk# apps successfully).

What do I miss?

Thanks,
Sebastian

_______________________________________________
Gtk-sharp-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list

Reply via email to