[maemo-commits] [maemo-commits] r12628 - in projects/haf/trunk/hildon-desktop: . libhildondesktop src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Tue Jul 3 16:28:04 EEST 2007
Author: moimart
Date: 2007-07-03 16:27:50 +0300 (Tue, 03 Jul 2007)
New Revision: 12628

Modified:
   projects/haf/trunk/hildon-desktop/ChangeLog
   projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-panel-expandable.c
   projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.c
   projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c
   projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
Log:
2007-07-03  Moises Martinez  <moises.martinez at nokia.com>

        * libhildondesktop/hildon-desktop-panel-expandable.c:
        - Fixed debug macro
        * libhildondesktop/hildon-desktop-popup-window.c:
        (hildon_desktop_popup_window_visibility_notify),
        (hildon_desktop_popup_window_composited_button_release),
        (hildon_desktop_popup_window_button_release_event):
        - Added some comments.
        * src/hd-applications-menu.c: (hd_applications_menu_create_menu):
        - Not attach the widget in order to be transient for root window and
        be shown on top of vkb.
        * src/hd-switcher-menu.c: (hd_switcher_menu_constructor):
        - Not attach the widget in order to be transient for root window and
        be shown on top of vkb.
        - Fixes: NB#62048.



Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog	2007-07-03 13:13:54 UTC (rev 12627)
+++ projects/haf/trunk/hildon-desktop/ChangeLog	2007-07-03 13:27:50 UTC (rev 12628)
@@ -1,3 +1,20 @@
+2007-07-03  Moises Martinez  <moises.martinez at nokia.com>
+
+	* libhildondesktop/hildon-desktop-panel-expandable.c:
+	- Fixed debug macro
+	* libhildondesktop/hildon-desktop-popup-window.c:
+	(hildon_desktop_popup_window_visibility_notify),
+	(hildon_desktop_popup_window_composited_button_release),
+	(hildon_desktop_popup_window_button_release_event):
+	- Added some comments.
+	* src/hd-applications-menu.c: (hd_applications_menu_create_menu):
+	- Not attach the widget in order to be transient for root window and
+	be shown on top of vkb.
+	* src/hd-switcher-menu.c: (hd_switcher_menu_constructor):
+	- Not attach the widget in order to be transient for root window and
+        be shown on top of vkb.
+	- Fixes: NB#62048.
+
 2007-07-02  Johan Bilien  <johan.bilien at nokia.com>
 
 	* src/hd-home-l10n.h: Added NOLOC comments

Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-panel-expandable.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-panel-expandable.c	2007-07-03 13:13:54 UTC (rev 12627)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-panel-expandable.c	2007-07-03 13:27:50 UTC (rev 12628)
@@ -42,7 +42,7 @@
 
 #define STATUSBAR_DEBUG 0
 #if (STATUSBAR_DEBUG)
-#define sb_debug(o,a...) sb_debug("sb" o,##a);
+#define sb_debug(o,a...) g_debug("sb" o,##a);
 #else
 #define sb_debug(o,a...) do{} while (0)
 #endif

Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.c	2007-07-03 13:13:54 UTC (rev 12627)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.c	2007-07-03 13:27:50 UTC (rev 12628)
@@ -103,11 +103,9 @@
 static gboolean popup_grab_on_window (GdkWindow *window, guint32 activate_time, gboolean grab_keyboard);
 
 static gboolean hildon_desktop_popup_window_button_release_event (GtkWidget *widget, GdkEventButton *event);
-#ifdef MAEMO_CHANGES
-#ifdef HAVE_XTEST
+#if defined (MAEMO_CHANGES) && defined(HAVE_XTEST)
 static void hildon_desktop_popup_menu_fake_button_event (GdkEventButton *event, gboolean press);
 #endif
-#endif
 struct _HildonDesktopPopupWindowPrivate 
 {
   GtkWidget	   	          **extra_panes;
@@ -601,9 +599,55 @@
  
       if (!gdk_error_trap_pop () && 
  	  type != GDK_WINDOW_TYPE_HINT_NOTIFICATION && 
-          type != GDK_WINDOW_TYPE_HINT_MENU)
+          type != GDK_WINDOW_TYPE_HINT_MENU && 
+	  type != GDK_WINDOW_TYPE_HINT_POPUP_MENU &&
+          type != GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU)
       {
         /* A non-message and non-menu window above us; close. */
+
+#if 0	      
+	/* This code is to check whether if we receive the visibility-notify from
+	 * the virtual keyboard. In that case we don't close but the menu window
+	 * is gonna be behind the virtual keyboard
+	 */
+	      
+        Atom    type_ret;
+        gint    format_ret;
+        gulong  items_ret;
+        gulong  after_ret;
+        union
+        {
+           Atom *a;
+           guchar *c;
+        } window_type;
+        gint    status;
+ 
+        window_type.c = NULL;
+ 
+        gdk_error_trap_push ();
+ 
+        status = XGetWindowProperty (GDK_DISPLAY_XDISPLAY (gdk_drawable_get_display (GDK_DRAWABLE (win))),
+                                     GDK_WINDOW_XID (win),
+                                     gdk_x11_get_xatom_by_name ("_NET_WM_WINDOW_TYPE"),
+                                     0, G_MAXLONG,
+                                     False,
+                                     XA_ATOM,
+                                     &type_ret,
+                                      &format_ret,
+                                      &items_ret,
+                                      &after_ret,
+                                      &window_type.c);
+ 
+        if (!gdk_error_trap_pop () &&
+            status == Success &&
+            window_type.c != NULL &&
+            items_ret == 1 &&
+            window_type.a[0] == gdk_x11_get_xatom_by_name ("_NET_WM_WINDOW_TYPE_INPUT"))
+        {
+           break;
+        }
+#endif	
+
         deactivate = TRUE;
         break;
       }
@@ -685,8 +729,12 @@
   if (!in_panes_area || in_window_area)
   {	  
     hildon_desktop_popup_window_popdown (popup);
-#ifdef MAEMO_CHANGES    
-#ifdef HAVE_XTEST
+#if defined(MAEMO_CHANGES) && defined(HAVE_XTEST)    
+    /* This hack sends an extra button-event in order to not lose the event
+     * when closing outside the menu so another button could receive it and
+     * act consequently.
+     */
+    
     if (popup->priv->attached_widget)
     {	    
       gtk_widget_get_pointer (popup->priv->attached_widget, &x, &y);
@@ -700,7 +748,6 @@
         hildon_desktop_popup_menu_fake_button_event (event, FALSE);
       }
     }
-#endif
 #endif    
   }
   
@@ -746,8 +793,12 @@
   if (!in_panes_area || !in_window_area)
   {	  
     hildon_desktop_popup_window_popdown (popup);
-#ifdef MAEMO_CHANGES    
-#ifdef HAVE_XTEST
+#if defined(MAEMO_CHANGES) && defined(HAVE_XTEST)
+    /* This hack sends an extra button-event in order to not lose the event
+     * when closing outside the menu so another button could receive it and
+     * act consequently.
+     */
+    
     if (popup->priv->attached_widget)
     {	    
       gtk_widget_get_pointer (popup->priv->attached_widget, &x, &y);
@@ -762,7 +813,6 @@
       }
     }
 #endif
-#endif    
   }
   return TRUE;
 }

Modified: projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c	2007-07-03 13:13:54 UTC (rev 12627)
+++ projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c	2007-07-03 13:27:50 UTC (rev 12628)
@@ -803,8 +803,12 @@
 
   gtk_widget_set_size_request (GTK_WIDGET (popup_window), 650, 480);
 
-  hildon_desktop_popup_window_attach_widget (popup_window, button->priv->button);
+  /* We don't attach the widget because if we do it, we cannot be on top of 
+   * virtual keyboard. Anyway it should be transient to button->priv->button
+   */
   
+  hildon_desktop_popup_window_attach_widget (popup_window, NULL);
+  
   button->priv->menu_categories =
     HILDON_DESKTOP_POPUP_MENU (g_object_new (HILDON_DESKTOP_TYPE_POPUP_MENU,
 		  		    	     "item-height", 68,

Modified: projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c	2007-07-03 13:13:54 UTC (rev 12627)
+++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c	2007-07-03 13:27:50 UTC (rev 12628)
@@ -546,8 +546,12 @@
     HILDON_DESKTOP_POPUP_WINDOW 
       (hildon_desktop_popup_window_new (1,GTK_ORIENTATION_HORIZONTAL,HD_POPUP_WINDOW_DIRECTION_RIGHT_BOTTOM));	     
 
+  /* We don't attach the widget because if we do it, we cannot be on top of 
+   * virtual keyboard. Anyway it should be transient to button
+   */
+
   hildon_desktop_popup_window_attach_widget
-    (switcher->priv->popup_window, button);	  
+    (switcher->priv->popup_window, NULL);	  
   
   switcher->priv->notifications_window = 
     hildon_desktop_popup_window_get_pane (switcher->priv->popup_window, 0);


More information about the maemo-commits mailing list