I don't believe that using set_parent() will actually place the widget inside the container; try gtk_container_add(GTK_CONTAINER(grid), widget); instead
2008/4/29 Tomas Carnecky <[EMAIL PROTECTED]>: > AlannY wrote: > > Hi there, my name is Alan and I have some troubles with GtkContainer. > > > > It's about 2 days, I already have spent trying to solve it, but I (i > > guess) can't. > > > > I'm writing a program, which looks like: > > +-----------------------------+ > > | Main Window (GtkWindow) | > > | +-------------------------+ | > > | | My custom widget | | > > | | +---------------------+ | | > > | | | GtkButton | | | > > | | +---------------------+ | | > > | +-------------------------+ | > > +-----------------------------+ > > > > I need some approach to place a GtkButton in my custom widget. I found > > (from GTK+ sources) that GtkTreeView, GtkNotebook (and others) inherits > > from GtkContainer . So, I decide to inherit my widget not from > > GtkWidget, but from GtkContainer. > > > > typedef struct _Grid Grid; > > typedef struct _GridClass GridClass; > > > > struct _Grid > > { > > GtkContainer parent; > > }; > > > > struct _GridClass > > { > > GtkContainerClass parent_class; > > }; > > > > And my _get_type function looks like: > > > > GtkType > > grid_get_type () > > { > > static GtkType grid_type = 0; > > > > if (!grid_type) > > { > > const GTypeInfo object_info = > > { > > sizeof (GtkContainerClass), > > NULL, > > NULL, > > (GClassInitFunc) grid_class_init, > > That still isn't the whole code! What does grid_class_init() do? Attach > both the whole grid header and source file to the email. > > > NULL, > > NULL, > > sizeof (Grid), > > 0, > > (GInstanceInitFunc) grid_init, > > NULL, > > }; > > > > grid_type = g_type_register_static (GTK_TYPE_CONTAINER, > > g_intern_static_string ("Grid"), &object_info, 0); > > } > > > > return grid_type; > > } > > > > The main feature of this function is GTK_TYPE_CONTAINER ;-) You see ;-) > > > > Next in my program, I'm creating my widget (grid) with that: > > > > [...] > > grid = grid_new (); > > gtk_container_add (GTK_CONTAINER (window), grid); > > [...] > > > > So, my problem starts here: at _new() function. I want to create > > GtkButton and place it in my widget. > > > > GtkWidget* > > grid_new () > > { > > Grid *grid; > > > > grid = g_object_new (grid_get_type (), NULL); > > > > button = gtk_button_new_with_label ("Test"); > > gtk_widget_set_parent (button, GTK_WIDGET (grid)); > > gtk_widget_show (button); > > > > return GTK_WIDGET (grid); > > } > > > > Everything right and works without errors ;-) But nothing happens. I > > can't see a GtkButton ;-) > > > > How to solve it? I need some way for "draw" (expose) GtkButton in my > > custom widget ;-) How to do it? > > > > P.S. I extremely think, that I just forgot something. But there are no > > tutorials about it ;-) "Information vacuum", so I decide to ask in > > mailing-lists. > > P.P.S. Only information about custom widget creation is a GTK sources, > > but (even with it) I can't solve my problem. ;-) > > P.P.P.S. Also, I really want to understand how GtkBox works ;-) > > And stop creating new threads... This is your third thread in > gtk-app-devel where you ask the same question. > > tom > > _______________________________________________ > gtk-list mailing list > [EMAIL PROTECTED] > http://mail.gnome.org/mailman/listinfo/gtk-list > _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list