diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c
index c3e107f..f3aca36 100644
--- a/gtk/gtkmenushell.c
+++ b/gtk/gtkmenushell.c
@@ -885,6 +885,11 @@ gtk_menu_shell_enter_notify (GtkWidget        *widget,
 {
   GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget);
 
+	/* If we've received a mouse enter event, it is safe to assume
+	 * we are no longer in keyboard mode.
+	 */
+	menu_shell->keyboard_mode = FALSE;
+
   if (event->mode == GDK_CROSSING_GTK_GRAB ||
       event->mode == GDK_CROSSING_GTK_UNGRAB ||
       event->mode == GDK_CROSSING_STATE_CHANGED)
