[maemo-commits] [maemo-commits] r9850 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Feb 14 14:18:47 EET 2007
Author: mitch
Date: 2007-02-14 14:18:44 +0200 (Wed, 14 Feb 2007)
New Revision: 9850

Modified:
   projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenu.c
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c
Log:
2007-02-14  Michael Natterer  <mitch at imendio.com>

	Fix automatic popdown of obscured menus:

	* gtk/gtkmenu.c (gtk_menu_init): add GDK_VISIBILITY_NOTIFY_MASK
	to menu->toplevel's event mask.

	* gtk/gtkmenu.c (gtk_menu_position)
	* gtk/gtkmenuitem.c (gtk_menu_item_position_menu): use
	GDK_WINDOW_TYPE_HINT_MENU in newly added calls to
	gtk_window_set_type_hint().



Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-02-14 12:15:43 UTC (rev 9849)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-02-14 12:18:44 UTC (rev 9850)
@@ -1,3 +1,15 @@
+2007-02-14  Michael Natterer  <mitch at imendio.com>
+
+	Fix automatic popdown of obscured menus:
+
+	* gtk/gtkmenu.c (gtk_menu_init): add GDK_VISIBILITY_NOTIFY_MASK
+	to menu->toplevel's event mask.
+
+	* gtk/gtkmenu.c (gtk_menu_position)
+	* gtk/gtkmenuitem.c (gtk_menu_item_position_menu): use
+	GDK_WINDOW_TYPE_HINT_MENU in newly added calls to
+	gtk_window_set_type_hint().
+
 2007-02-14  Kristian Rietveld  <kris at imendio.com>
 
 	Merge from upstream trunk:

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenu.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenu.c	2007-02-14 12:15:43 UTC (rev 9849)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenu.c	2007-02-14 12:18:44 UTC (rev 9850)
@@ -899,6 +899,10 @@
   gtk_window_set_resizable (GTK_WINDOW (menu->toplevel), FALSE);
   gtk_window_set_mnemonic_modifier (GTK_WINDOW (menu->toplevel), 0);
 
+#ifdef MAEMO_CHANGES
+  gtk_widget_add_events (menu->toplevel, GDK_VISIBILITY_NOTIFY_MASK);
+#endif /* MAEMO_CHANGES */
+
   /* Refloat the menu, so that reference counting for the menu isn't
    * affected by it being a child of the toplevel
    */
@@ -1533,9 +1537,9 @@
   /* Hildon: save position of the pointer during popup. Not multihead safe. */
   if (priv->context_menu)
     gdk_display_get_pointer (gtk_widget_get_display (widget), NULL,
-                            &priv->popup_pointer_x,
-                            &priv->popup_pointer_y,
-                            NULL);
+                             &priv->popup_pointer_x,
+                             &priv->popup_pointer_y,
+                             NULL);
 #endif /* MAEMO_CHANGES */
 
 #ifdef MAEMO_CHANGES
@@ -3997,8 +4001,12 @@
 
   /* Set the type hint here to allow custom position functions to set a different hint */
   if (!GTK_WIDGET_VISIBLE (menu->toplevel))
+#ifdef MAEMO_CHANGES
+    gtk_window_set_type_hint (GTK_WINDOW (menu->toplevel), GDK_WINDOW_TYPE_HINT_MENU);
+#else
     gtk_window_set_type_hint (GTK_WINDOW (menu->toplevel), GDK_WINDOW_TYPE_HINT_POPUP_MENU);
-  
+#endif /* MAEMO_CHANGES */
+
   if (menu->position_func)
     {
       (* menu->position_func) (menu, &x, &y, &private->initially_pushed_in,

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c	2007-02-14 12:15:43 UTC (rev 9849)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c	2007-02-14 12:18:44 UTC (rev 9850)
@@ -1346,8 +1346,13 @@
 
   if (!GTK_WIDGET_VISIBLE (menu->toplevel))
     {
+#ifdef MAEMO_CHANGES
+      gtk_window_set_type_hint (GTK_WINDOW (menu->toplevel),
+				GDK_WINDOW_TYPE_HINT_MENU);
+#else
       gtk_window_set_type_hint (GTK_WINDOW (menu->toplevel), menu_item->from_menubar?
 				GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU : GDK_WINDOW_TYPE_HINT_POPUP_MENU);
+#endif /* MAEMO_CHANGES */
     }
 }
 


More information about the maemo-commits mailing list