gtk_widget_set_parent(child, GTK_WIDGET(compositor));
display = gtk_widget_get_display (GTK_WIDGET(compositor));
- if (gdk_display_supports_composite(display))
- {
- cc = g_new(GhbCompositorChild, 1);
- cc->widget = child;
- cc->z_pos = z_pos;
- cc->opacity = opacity;
- cc->drawables = NULL;
- compositor->children = g_list_insert_sorted(
+ cc = g_new(GhbCompositorChild, 1);
+ cc->widget = child;
+ cc->z_pos = z_pos;
+ cc->opacity = opacity;
+ cc->drawables = NULL;
+ compositor->children = g_list_insert_sorted(
compositor->children, cc, zsort);
+ if (gdk_display_supports_composite(display))
+ {
GList *link;
cc->drawables = find_drawables(NULL, cc->widget);
child_allocation.x = 0;
child_allocation.y = 0;
}
+
child_allocation.width = MAX (allocation->width -
GTK_CONTAINER (widget)->border_width * 2, 0);
child_allocation.height = MAX (allocation->height -
for (link = compositor->children; link != NULL; link = link->next)
{
cc = (GhbCompositorChild*)link->data;
- gtk_widget_size_allocate (cc->widget, &child_allocation);
+ if (GTK_WIDGET_REALIZED (cc->widget))
+ gtk_widget_size_allocate (cc->widget, &child_allocation);
}
}
{
/* get our child */
child = GTK_WIDGET(draw->data);
+ if (!GTK_WIDGET_VISIBLE(cc->widget) ||
+ !GTK_WIDGET_VISIBLE(child))
+ continue;
+
/* the source data is the (composited) event box */
gdk_cairo_set_source_pixmap (cr, child->window,
child->allocation.x,