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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Jan 29 17:05:17 EET 2007
Author: mitch
Date: 2007-01-29 17:05:15 +0200 (Mon, 29 Jan 2007)
New Revision: 9431

Modified:
   projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c
Log:
2007-01-29  Michael Natterer  <mitch at gimp.org>

	* gtk/gtkmenuitem.c: port over: open submenus on activation and
	don't open them on select.



Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-01-29 15:04:22 UTC (rev 9430)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-01-29 15:05:15 UTC (rev 9431)
@@ -1,3 +1,8 @@
+2007-01-29  Michael Natterer  <mitch at gimp.org>
+
+	* gtk/gtkmenuitem.c: port over: open submenus on activation and
+	don't open them on select.
+
 2007-01-29  Michael Natterer  <mitch at imendio.com>
 
 	* gtk/gtkmenuitem.c: port over queueing a draw on the parent menu

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c	2007-01-29 15:04:22 UTC (rev 9430)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenuitem.c	2007-01-29 15:05:15 UTC (rev 9431)
@@ -71,6 +71,9 @@
 
 static void gtk_real_menu_item_select               (GtkItem     *item);
 static void gtk_real_menu_item_deselect             (GtkItem     *item);
+#ifdef MAEMO_CHANGES
+static void gtk_real_menu_item_activate             (GtkMenuItem *item);
+#endif /* MAEMO_CHANGES */
 static void gtk_real_menu_item_activate_item        (GtkMenuItem *item);
 static void gtk_real_menu_item_toggle_size_request  (GtkMenuItem *menu_item,
 						     gint        *requisition);
@@ -130,7 +133,11 @@
   item_class->select = gtk_real_menu_item_select;
   item_class->deselect = gtk_real_menu_item_deselect;
 
+#ifdef MAEMO_CHANGES
+  klass->activate = gtk_real_menu_item_activate;
+#else
   klass->activate = NULL;
+#endif /* MAEMO_CHANGES */
   klass->activate_item = gtk_real_menu_item_activate_item;
   klass->toggle_size_request = gtk_real_menu_item_toggle_size_request;
   klass->toggle_size_allocate = gtk_real_menu_item_toggle_size_allocate;
@@ -927,10 +934,13 @@
       if (popup_delay > 0)
 	{
 	  GdkEvent *event = gtk_get_current_event ();
-	  
+
+#ifndef MAEMO_CHANGES
 	  menu_item->timer = g_timeout_add (popup_delay,
 					    gtk_menu_item_select_timeout,
 					    menu_item);
+#endif /* !MAEMO_CHANGES */
+
 	  if (event &&
 	      event->type != GDK_BUTTON_PRESS &&
 	      event->type != GDK_ENTER_NOTIFY)
@@ -991,7 +1001,50 @@
   return TRUE;
 }
 
+#ifdef MAEMO_CHANGES
+/* This function exists only for opening submenus on
+ * activation.
+ */
+static void
+gtk_real_menu_item_activate (GtkMenuItem *item)
+{
+  GdkEvent *event;
+  gint popup_delay;
 
+  g_return_if_fail (GTK_IS_MENU_ITEM (item));
+
+  if (!GTK_IS_MENU (item->submenu) ||
+      GTK_WIDGET_VISIBLE (item->submenu))
+    return;
+
+  event = gtk_get_current_event ();
+
+  /* Add a delay before opening a new menu */
+  if (item->timer)
+    {
+      g_source_remove (item->timer);
+      item->timer = 0;
+      popup_delay = 0;
+    }
+  else
+    popup_delay = get_popup_delay (item);
+
+  item->timer = g_timeout_add (popup_delay,
+                               gtk_menu_item_select_timeout,
+                               item);
+
+  /* We don't want to select first item if the submenu
+   * is opened with mouse release because the selection
+   * would move straigh back under the cursor.
+   */
+  if ((event == NULL) || (event->type != GDK_BUTTON_RELEASE))
+    gtk_menu_shell_select_first (GTK_MENU_SHELL (item->submenu), TRUE);
+
+  if (event)
+    gdk_event_free (event);
+}
+#endif /* MAEMO_CHANGES */
+
 static void
 gtk_real_menu_item_activate_item (GtkMenuItem *menu_item)
 {
@@ -1014,9 +1067,12 @@
 	  _gtk_menu_shell_activate (menu_shell);
 
 	  gtk_menu_shell_select_item (GTK_MENU_SHELL (widget->parent), widget); 
+
+#ifndef MAEMO_CHANGES
 	  _gtk_menu_item_popup_submenu (widget); 
 
 	  gtk_menu_shell_select_first (GTK_MENU_SHELL (menu_item->submenu), TRUE);
+#endif /* !MAEMO_CHANGES */
 	}
     }
 }


More information about the maemo-commits mailing list