Strange transparency behaviour
- From: Miguel Gómez <magomez igalia com>
- To: gtk-list gnome org
- Subject: Strange transparency behaviour
- Date: Tue, 22 Apr 2008 15:08:44 +0200
Hi!
I was making some trials with transparency stuff with the code attached,
and I've found that if I put an eventbox in a window and set its
background transparent, the background of the window becomes transparent
too.
Is this the normal behaviour? I was expecting to see the window
background through the eventbox. Is there any way to handle the opacity
of the window background and of the eventbox separately? Or maybe there
is only one alpha channel per toplevel window and it's impossible to set
different opacities to different gdkwindows that are in the same window
hierarchy?
Thanks for your help!
Greetings!
--
Miguel Gomez <magomez igalia com>
Igalia - http://www.igalia.com
#include <gtk/gtk.h>
static gboolean
transparent_expose (GtkWidget *widget,
GdkEventExpose *event)
{
cairo_t *cr;
cr = gdk_cairo_create (widget->window);
cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
gdk_cairo_region (cr, event->region);
cairo_fill (cr);
cairo_destroy (cr);
return FALSE;
}
int
main (int argc, char **argv)
{
GtkWidget *window, *event, *label, *aspect;
GdkScreen *screen;
GdkColormap *rgba;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
screen = gtk_widget_get_screen (window);
rgba = gdk_screen_get_rgba_colormap (screen);
gtk_widget_set_colormap (window, rgba);
gtk_widget_set_size_request (window, 300, 300);
aspect = gtk_aspect_frame_new (NULL, 0.5, 0.5, 4.0 / 3, FALSE);
gtk_container_add (GTK_CONTAINER (window), aspect);
event = gtk_event_box_new ();
gtk_event_box_set_visible_window (GTK_EVENT_BOX (event), TRUE);
gtk_widget_set_app_paintable (GTK_WIDGET (event), TRUE);
gtk_container_add (GTK_CONTAINER (aspect), event);
g_signal_connect (event, "expose-event",
G_CALLBACK (transparent_expose), NULL);
label = gtk_label_new ("this a visible label");
gtk_container_add (GTK_CONTAINER (event), label);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]