Custom container widget - childs drawn in top-left corner of window
- From: "Stephan Arts" <stephan xfce org>
- To: gtk-app-devel-list gnome org
- Subject: Custom container widget - childs drawn in top-left corner of window
- Date: Sat, 15 Dec 2007 11:46:26 +0100
Hi,
I am having an issue with a new container widget I am writing. I have
overridden the size_request and size_allocate methods.[0]
For some reason, the children are all rendered in the top-left corner
of the main window. Not even near the container.
http://svn.xfce.org/svn/goodies/ristretto/trunk/src/thumbnail_bar.c:152
static void
rstto_thumbnail_bar_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
{
   RsttoThumbnailBar *bar = RSTTO_THUMBNAIL_BAR(widget);
   gint border_width =  0;
   widget->allocation = *allocation;
   GtkAllocation child_allocation;
   GtkRequisition child_requisition;
   child_allocation.x = allocation->x + border_width;
   child_allocation.y = allocation->y + border_width;
   child_allocation.width = 70 - border_width;
   child_allocation.height = 70 - border_width;
   GSList *iter = bar->priv->thumbs;
   /*
   if (GTK_WIDGET_REALIZED (widget))
   {
       gdk_window_move_resize (widget->window,
                             allocation->x + border_width,
                             allocation->y + border_width,
                             allocation->width - border_width * 2,
                             allocation->height - border_width * 2);
 }
   */
   switch(bar->priv->orientation)
   {
       case GTK_ORIENTATION_HORIZONTAL:
           if(iter)
           {
               gtk_widget_get_child_requisition(GTK_WIDGET(iter->data), &child_requisition);
               gtk_widget_size_allocate(GTK_WIDGET(iter->data), &child_allocation);
               if (child_allocation.x < (allocation->x + allocation->width))
                   gtk_widget_set_child_visible(GTK_WIDGET(iter->data), TRUE);
               else
                   gtk_widget_set_child_visible(GTK_WIDGET(iter->data), FALSE);
               child_allocation.x += child_requisition.width;
               iter = g_slist_next(iter);
           }
           break;
       case GTK_ORIENTATION_VERTICAL:
           break;
   }
}
What am I doing wrong?
Regards,
Stephan Arts
[0] http://svn.xfce.org/svn/goodies/ristretto/trunk/src/thumbnail_bar.c
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]