r3419 - trunk/src/target/OM-2007.2/daemons/neod/src

mickey at sita.openmoko.org mickey at sita.openmoko.org
Wed Nov 14 11:33:29 CET 2007


Author: mickey
Date: 2007-11-14 11:33:29 +0100 (Wed, 14 Nov 2007)
New Revision: 3419

Modified:
   trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c
Log:
neod: repair toggle-fullscreen again


Modified: trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c
===================================================================
--- trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c	2007-11-14 10:19:37 UTC (rev 3418)
+++ trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c	2007-11-14 10:33:29 UTC (rev 3419)
@@ -124,6 +124,8 @@
 
 static pa_context* pac;
 
+static Window last_active_window = 0;
+
 /* Borrowed from libwnck */
 static Window get_window_property( Window xwindow, Atom atom )
 {
@@ -493,13 +495,9 @@
     static int is_fullscreen = 0;
 
     gtk_widget_hide( aux_menu );
-    // wait until it's really closed
-    while ( GTK_WIDGET_MAPPED( aux_menu ) )
-        gtk_main_iteration();
 
-    Window xwindow = get_window_property( gdk_x11_get_default_root_xwindow(), gdk_x11_get_xatom_by_name("_NET_ACTIVE_WINDOW") );
-    const char* title = get_text_property( xwindow, gdk_x11_get_xatom_by_name("_NET_WM_NAME") );
-    g_debug( "active Window = %d ('%s')", (int) xwindow, title );
+    const char* title = get_text_property( last_active_window, gdk_x11_get_xatom_by_name("_NET_WM_NAME") );
+    g_debug( "active Window = %d ('%s')", (int)last_active_window, title );
 
     Display* display = XOpenDisplay( NULL );
 
@@ -508,7 +506,7 @@
     xev.xclient.serial = 0;
     xev.xclient.send_event = True;
     xev.xclient.display = display;
-    xev.xclient.window = xwindow;
+    xev.xclient.window = last_active_window;
     xev.xclient.message_type = gdk_x11_get_xatom_by_name( "_NET_WM_STATE" );
     xev.xclient.format = 32;
     xev.xclient.data.l[0] = 1 - is_fullscreen; // ADD = 1, REMOVE = 0
@@ -681,6 +679,9 @@
 
 void neod_buttonactions_show_aux_menu()
 {
+    // remember last active window before showing popup menu
+    last_active_window = get_window_property( gdk_x11_get_default_root_xwindow(), gdk_x11_get_xatom_by_name("_NET_ACTIVE_WINDOW") );
+
     // show popup menu requesting for actions
     if ( !aux_menu )
     {
@@ -711,13 +712,11 @@
         gtk_widget_show_all( GTK_WIDGET(box) );
 
         // override, otherwise matchbox won't show it fullscreen
-        gtk_window_set_type_hint( GTK_WINDOW(aux_menu), GDK_WINDOW_TYPE_HINT_POPUP_MENU );
+        gtk_window_set_type_hint( GTK_WINDOW(aux_menu), GDK_WINDOW_TYPE_HINT_NORMAL );
         //gtk_window_fullscreen( GTK_WINDOW(aux_menu) );
-        //gtk_window_set_decorated( GTK_WINDOW(aux_menu), FALSE );
         g_signal_connect_swapped( aux_menu, "response", G_CALLBACK(gtk_widget_hide), aux_menu);
         gtk_box_pack_start_defaults( GTK_BOX(GTK_DIALOG(aux_menu)->vbox), box );
     }
-    gtk_window_resize( GTK_WINDOW(aux_menu), gdk_screen_width(), gdk_screen_height() );
     int response = gtk_dialog_run( GTK_DIALOG(aux_menu) );
     g_debug( "gtk_dialog_run completed, response = %d", response );
 }
@@ -729,6 +728,10 @@
     static GtkWidget* gpspower = 0;
     static GtkWidget* pmprofile = 0;
 
+    // remember last active window before showing popup menu
+    last_active_window = get_window_property( gdk_x11_get_default_root_xwindow(), gdk_x11_get_xatom_by_name("_NET_ACTIVE_WINDOW") );
+
+
     // show popup menu requesting for actions
     if ( !power_menu )
     {





More information about the commitlog mailing list