Index: gtk/gtkmenubar.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkmenubar.c,v
retrieving revision 1.44.2.2
diff -u -p -r1.44.2.2 gtkmenubar.c
--- gtk/gtkmenubar.c	6 Jul 2002 00:24:28 -0000	1.44.2.2
+++ gtk/gtkmenubar.c	25 Jul 2002 16:47:01 -0000
@@ -526,19 +526,21 @@ gtk_menu_bar_hierarchy_changed (GtkWidge
  * @dir: direction in which to cycle the focus
  * 
  * Move the focus between menubars in the toplevel.
+ *
+ * Returns: %TRUE if a different menu bar was successfully focused.
  **/
-void
+gboolean
 _gtk_menu_bar_cycle_focus (GtkMenuBar       *menubar,
 			   GtkDirectionType  dir)
 {
   GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (menubar));
+  gboolean result = FALSE;
 
   if (GTK_WIDGET_TOPLEVEL (toplevel))
     {
       GList *tmp_menubars = get_viewable_menu_bars (GTK_WINDOW (toplevel));
       GList *menubars;
       GList *current;
-      GtkMenuBar *new;
 
       menubars = _gtk_container_focus_sort (GTK_CONTAINER (toplevel), tmp_menubars,
 					    dir, GTK_WIDGET (menubar));
@@ -547,26 +549,25 @@ _gtk_menu_bar_cycle_focus (GtkMenuBar   
       if (menubars)
 	{
 	  current = g_list_find (menubars, menubar);
+
 	  if (current && current->next)
-	    new = current->next->data;
-	  else
-	    new = menubars->data;
-	  
-	  if (new != menubar)
 	    {
-	      GtkMenuShell *new_menushell = GTK_MENU_SHELL (new);
+	      GtkMenuShell *new_menushell = GTK_MENU_SHELL (current->next->data);
 
 	      if (new_menushell->children)
 		{
 		  g_signal_emit_by_name (menubar, "cancel", 0);
 		  gtk_signal_emit_by_name (GTK_OBJECT (new_menushell->children->data),
 					   "activate_item");
+		  result = TRUE;
 		}
 	    }
 	}
 	  
       g_list_free (menubars);
     }
+
+  return result;
 }
 
 static GtkShadowType
Index: gtk/gtkmenubar.h
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkmenubar.h,v
retrieving revision 1.15
diff -u -p -r1.15 gtkmenubar.h
--- gtk/gtkmenubar.h	3 Mar 2002 22:15:39 -0000	1.15
+++ gtk/gtkmenubar.h	25 Jul 2002 16:47:01 -0000
@@ -75,8 +75,8 @@ GtkWidget* gtk_menu_bar_new             
 #endif /* GTK_DISABLE_DEPRECATED */
 
 /* Private functions */
-void _gtk_menu_bar_cycle_focus (GtkMenuBar       *menubar,
-				GtkDirectionType  dir);
+gboolean _gtk_menu_bar_cycle_focus (GtkMenuBar       *menubar,
+				    GtkDirectionType  dir);
 
 #ifdef __cplusplus
 }
Index: gtk/gtkmenushell.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkmenushell.c,v
retrieving revision 1.59.2.2
diff -u -p -r1.59.2.2 gtkmenushell.c
--- gtk/gtkmenushell.c	6 Jul 2002 00:24:28 -0000	1.59.2.2
+++ gtk/gtkmenushell.c	25 Jul 2002 16:47:01 -0000
@@ -320,19 +320,11 @@ gtk_menu_shell_class_init (GtkMenuShellC
 				GTK_TYPE_BOOL,
 				FALSE);
   gtk_binding_entry_add_signal (binding_set,
-				GDK_Tab, GDK_CONTROL_MASK,
+				GDK_F10, 0,
 				"cycle_focus", 1,
                                 GTK_TYPE_DIRECTION_TYPE, GTK_DIR_TAB_FORWARD);
   gtk_binding_entry_add_signal (binding_set,
-				GDK_KP_Tab, GDK_CONTROL_MASK,
-				"cycle_focus", 1,
-                                GTK_TYPE_DIRECTION_TYPE, GTK_DIR_TAB_FORWARD);
-  gtk_binding_entry_add_signal (binding_set,
-				GDK_Tab, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
-				"cycle_focus", 1,
-                                GTK_TYPE_DIRECTION_TYPE, GTK_DIR_TAB_BACKWARD);
-  gtk_binding_entry_add_signal (binding_set,
-				GDK_KP_Tab, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+				GDK_F10, GDK_SHIFT_MASK,
 				"cycle_focus", 1,
                                 GTK_TYPE_DIRECTION_TYPE, GTK_DIR_TAB_BACKWARD);
 }
@@ -1181,5 +1173,6 @@ gtk_real_menu_shell_cycle_focus (GtkMenu
     }
 
   if (menu_shell)
-    _gtk_menu_bar_cycle_focus (GTK_MENU_BAR (menu_shell), dir);
+    if (!_gtk_menu_bar_cycle_focus (GTK_MENU_BAR (menu_shell), dir))
+      gtk_real_menu_shell_cancel (menu_shell);
 }
