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 <[email protected]>
> 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
[email protected]
https://lists.maemo.org/mailman/listinfo/maemo-developers