X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=gtk%2Fsrc%2Fghbcompositor.c;h=81628b6bf1940500c6900d344c9c573ec1b355a3;hb=9460d9624a5cf24126bc39605bc47d43330fcdf4;hp=11e1441f5cb654d627fd6dc1c748cfafafd90ce7;hpb=33fb2c466caae39a81a1c69d585cbec7fd44a997;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/gtk/src/ghbcompositor.c b/gtk/src/ghbcompositor.c index 11e1441f..81628b6b 100644 --- a/gtk/src/ghbcompositor.c +++ b/gtk/src/ghbcompositor.c @@ -288,21 +288,21 @@ ghb_compositor_new (void) static void showtype(const gchar *msg, GtkWidget *widget) { - GType type; - gchar *str; - - type = GTK_WIDGET_TYPE(widget); - if (type == GTK_TYPE_DRAWING_AREA) - str = "drawing area"; - else if (type == GTK_TYPE_ALIGNMENT) - str = "alignment"; - else if (type == GTK_TYPE_EVENT_BOX) - str = "event box"; - else if (type == GTK_TYPE_EVENT_BOX) - str = "event box"; - else - str = "unknown"; - g_message("%s: %s", msg, str); + GType type; + gchar *str; + + type = GTK_WIDGET_TYPE(widget); + if (type == GTK_TYPE_DRAWING_AREA) + str = "drawing area"; + else if (type == GTK_TYPE_ALIGNMENT) + str = "alignment"; + else if (type == GTK_TYPE_EVENT_BOX) + str = "event box"; + else if (type == GTK_TYPE_EVENT_BOX) + str = "event box"; + else + str = "unknown"; + g_message("%s: %s", msg, str); } #endif @@ -354,7 +354,6 @@ ghb_compositor_zlist_insert ( gint z_pos, gdouble opacity) { - GtkWidget *widget; GhbCompositorChild *cc; GdkDisplay *display; @@ -362,18 +361,18 @@ ghb_compositor_zlist_insert ( g_return_if_fail (GTK_IS_WIDGET (child)); g_return_if_fail (child->parent == NULL); - widget = GTK_WIDGET (compositor); + gtk_widget_set_parent(child, GTK_WIDGET(compositor)); + + display = gtk_widget_get_display (GTK_WIDGET(compositor)); 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); - gtk_widget_set_parent(child, GTK_WIDGET(compositor)); - - display = gtk_widget_get_display (GTK_WIDGET(compositor)); if (gdk_display_supports_composite(display)) { GList *link; @@ -571,6 +570,7 @@ ghb_compositor_size_allocate (GtkWidget *widget, GtkAllocation *allocation) 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 - @@ -590,7 +590,8 @@ ghb_compositor_size_allocate (GtkWidget *widget, GtkAllocation *allocation) 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); } } @@ -604,6 +605,7 @@ ghb_compositor_blend (GtkWidget *widget, GdkEventExpose *event) cairo_t *cr; GhbCompositorChild *cc; + if (compositor->children == NULL) return; /* create a cairo context to draw to the window */ cr = gdk_cairo_create (widget->window);