Hi Kimmo, I'm sorry to bother you again, but the problem I'm facing is not how to get a transparent window, but that if I create such a window the HildonAppMenu of its parent HildonWindow doesn't show anymore. I (slightly) modified your code to exemplify my situation.
Thanks for your time, Luca Donaggio 2009/11/10 Kimmo Hämäläinen <kimmo.hamalai...@nokia.com> > Hi, > > Sorry, took some time, I was busy with some bug fixing... I started > with the Home applet example and managed to whip up a small example > (attached) that shows a transparent pop-up window. > > -Kimmo > >
/* gcc -Wall `pkg-config gtk+-2.0 hildon-1 --cflags --libs` rgba-window-example-1.c -o rgba-window-example-1 */ #include <gtk/gtk.h> #include <hildon/hildon.h> static gboolean handle_expose (GtkWidget *widget, GdkEventExpose *event) { cairo_t *cr; /* Create cairo context */ cr = gdk_cairo_create (GDK_DRAWABLE (widget->window)); gdk_cairo_region (cr, event->region); cairo_clip (cr); /* Draw alpha background */ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); cairo_set_source_rgba (cr, 0.5, 0.5, 0.5, 0.5); cairo_paint (cr); /* Free context */ cairo_destroy (cr); return FALSE; } int main () { HildonProgram *prog; HildonWindow *mainwin; GtkWidget *win, *label1, *label2; GdkScreen *screen; HildonAppMenu *menu; GtkWidget *button; hildon_gtk_init (NULL, NULL); prog = HILDON_PROGRAM (hildon_program_get_instance ()); mainwin = HILDON_WINDOW (hildon_window_new ()); hildon_program_add_window (prog, mainwin); menu = HILDON_APP_MENU (hildon_app_menu_new ()); button = gtk_button_new_with_label ("Quit"); g_signal_connect_after (button, "clicked", G_CALLBACK (gtk_main_quit), NULL); hildon_app_menu_append (menu, GTK_BUTTON (button)); gtk_widget_show_all (GTK_WIDGET (menu)); hildon_window_set_app_menu (mainwin, menu); label2 = gtk_label_new ("This is the main Hildon window\nThis is the main Hildon window\nThis is the main Hildon window\nThis is the main Hildon window"); gtk_container_add (GTK_CONTAINER (mainwin), label2); gtk_widget_show_all (GTK_WIDGET (mainwin)); win = gtk_window_new (GTK_WINDOW_POPUP); screen = gtk_widget_get_screen (win); gtk_widget_set_colormap (win, gdk_screen_get_rgba_colormap (screen)); gtk_widget_set_app_paintable (win, TRUE); gtk_widget_realize (win); gdk_window_set_back_pixmap (win->window, NULL, FALSE); gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (mainwin)); gtk_window_set_destroy_with_parent (GTK_WINDOW (win), TRUE); gtk_window_move (GTK_WINDOW (win), 300, 200); label1 = gtk_label_new ("This is an RGBA window"); gtk_container_add (GTK_CONTAINER (win), label1); gtk_widget_show_all (win); g_signal_connect (win, "expose-event", G_CALLBACK (handle_expose), win); gtk_main (); return 0; }
_______________________________________________ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers