diff -EbBur gtk+-2.8.17.orig/gtk/gtkmenubar.c gtk+-2.8.17/gtk/gtkmenubar.c
--- gtk+-2.8.17.orig/gtk/gtkmenubar.c	2005-07-04 14:51:56.000000000 +0800
+++ gtk+-2.8.17/gtk/gtkmenubar.c	2006-06-03 15:29:48.000000000 +0800
@@ -55,6 +55,7 @@
 {
   GtkPackDirection pack_direction;
   GtkPackDirection child_pack_direction;
+  GtkWidget *prelight_menu_item;
 };
 
 #define GTK_MENU_BAR_GET_PRIVATE(o)  \
@@ -84,6 +85,12 @@
 static void gtk_menu_bar_move_current      (GtkMenuShell     *menu_shell,
                                             GtkMenuDirectionType direction);
 					    
+static gint gtk_menu_bar_enter_notify      (GtkWidget         *widget,
+                                            GdkEventCrossing  *event);
+static gint gtk_menu_bar_leave_notify      (GtkWidget         *widget,
+                                            GdkEventCrossing  *event);
+static void gtk_menu_bar_deactivate        (GtkMenuShell *menu_shell,
+                                            gpointer      user_data);
 
 static GtkShadowType get_shadow_type   (GtkMenuBar      *menubar);
 
@@ -141,6 +148,10 @@
   widget_class->expose_event = gtk_menu_bar_expose;
   widget_class->hierarchy_changed = gtk_menu_bar_hierarchy_changed;
   
+  widget_class->enter_notify_event = gtk_menu_bar_enter_notify;
+  widget_class->leave_notify_event = gtk_menu_bar_leave_notify;
+  menu_shell_class->deactivate = gtk_menu_bar_deactivate;
+  
   menu_shell_class->submenu_placement = GTK_TOP_BOTTOM;
   menu_shell_class->get_popup_delay = gtk_menu_bar_get_popup_delay;
   menu_shell_class->move_current = gtk_menu_bar_move_current;
@@ -239,6 +250,13 @@
                                                              DEFAULT_IPADDING,
                                                              GTK_PARAM_READABLE));
 
+  gtk_widget_class_install_style_property (widget_class,
+					   g_param_spec_boolean ("prelight-item",
+							         P_("Prelight item"),
+							         P_("Highlight menu item on mouse over"),
+							         FALSE,
+                                     GTK_PARAM_READABLE));
+
   gtk_settings_install_property (g_param_spec_int ("gtk-menu-bar-popup-delay",
 						   P_("Delay before drop down menus appear"),
 						   P_("Delay before the submenus of a menu bar appear"),
@@ -967,5 +985,159 @@
     }
 }
 
+gint gtk_menu_bar_enter_notify (GtkWidget        *widget,
+                                GdkEventCrossing *event)
+{
+  GtkMenuBar *menu_bar;
+  GtkMenuShell *menu_shell;
+  GtkWidget *menu_item;
+  gboolean use_prelight;
+  GtkMenuBarPrivate *priv;
+
+  g_return_val_if_fail (GTK_IS_MENU_SHELL (widget), FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  menu_shell = GTK_MENU_SHELL (widget);
+  menu_bar = GTK_MENU_BAR(widget);
+  menu_item = gtk_get_event_widget ((GdkEvent*) event);
+
+  gtk_widget_style_get (widget, "prelight-item", &use_prelight, NULL);
+
+  if( !use_prelight )
+    goto default_handler;
+
+  priv = GTK_MENU_BAR_GET_PRIVATE (menu_bar);
+
+  if ( !menu_item || !GTK_IS_MENU_ITEM (menu_item) )
+  {
+    if( priv->prelight_menu_item )
+    {
+      if (!menu_shell->active) {
+        gtk_widget_set_state( priv->prelight_menu_item, GTK_STATE_NORMAL );
+        priv->prelight_menu_item = NULL;
+        return TRUE;
+      }
+      priv->prelight_menu_item = NULL;
+    }
+    return ((GtkWidgetClass*)parent_class)->enter_notify_event( widget, event );
+  }
+
+  if ((menu_item->parent == (GtkWidget*)menu_bar) &&
+      (priv->prelight_menu_item != menu_item) &&
+      GTK_IS_MENU_ITEM (menu_item))
+    {
+      if ( GTK_WIDGET_STATE (menu_item) != GTK_STATE_PRELIGHT )
+	{
+          if (!menu_shell->active)
+            {
+              if( priv->prelight_menu_item ) {
+                gtk_widget_set_state( priv->prelight_menu_item, GTK_STATE_NORMAL );
+              }
+              gtk_widget_set_state( menu_item, GTK_STATE_PRELIGHT );
+              priv->prelight_menu_item = menu_item;
+              return TRUE;
+            }
+          priv->prelight_menu_item = menu_item;
+	}
+    }
+
+default_handler:
+  return ((GtkWidgetClass*)parent_class)->enter_notify_event( widget, event );
+}
+
+static gint
+gtk_menu_bar_leave_notify (GtkWidget        *widget,
+                           GdkEventCrossing *event)
+{
+  GtkMenuShell *menu_shell;
+  GtkMenuBar *menu_bar;
+  GtkMenuItem *menu_item;
+  GtkWidget *event_widget;
+  gboolean use_prelight;
+  GtkMenuBarPrivate *priv;
+
+  g_return_val_if_fail (GTK_IS_MENU_SHELL (widget), FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  gtk_widget_style_get (widget, "prelight-item", &use_prelight, NULL);
+
+  if( !use_prelight )
+    goto default_handler;
+
+
+  if (GTK_WIDGET_VISIBLE (widget))
+    {
+      menu_shell = GTK_MENU_SHELL (widget);
+      menu_bar = GTK_MENU_BAR (widget);
+      priv = GTK_MENU_BAR_GET_PRIVATE (menu_bar);
+
+      event_widget = gtk_get_event_widget ((GdkEvent*) event);
+
+      if (!event_widget || !GTK_IS_MENU_ITEM (event_widget))
+      {
+        if( priv->prelight_menu_item )
+        {
+          if( !menu_shell->active ) {
+            gtk_widget_set_state( priv->prelight_menu_item, GTK_STATE_NORMAL );
+            priv->prelight_menu_item = NULL;
+            return TRUE;
+          }
+          priv->prelight_menu_item = NULL;
+        }
+        return ((GtkWidgetClass*)parent_class)->leave_notify_event( widget, event );
+      }
+
+      menu_item = GTK_MENU_ITEM (event_widget);
+
+      if (!_gtk_menu_item_is_selectable (event_widget))
+	return TRUE;
+
+      if( !menu_shell->active )
+        {
+          if ((priv->prelight_menu_item == event_widget) &&
+	      (menu_item->submenu == NULL))
+	    {
+	      if ((event->detail != GDK_NOTIFY_INFERIOR) &&
+	          (GTK_WIDGET_STATE (menu_item) != GTK_STATE_NORMAL))
+	        {
+                  gtk_widget_set_state( widget, GTK_STATE_NORMAL );
+                  priv->prelight_menu_item = NULL;
+	        }
+	    }
+          return TRUE;
+        }
+    }
+
+default_handler:
+  return ((GtkWidgetClass*)parent_class)->leave_notify_event( widget, event );
+}
+
+void 
+gtk_menu_bar_deactivate (GtkMenuShell *menu_shell,
+                         gpointer      user_data)
+{
+  GtkMenuBar *menu_bar;
+  GtkWidget *active_menu_item;
+  gboolean use_prelight;
+  GtkMenuBarPrivate *priv;
+
+  gtk_widget_style_get (GTK_WIDGET(menu_shell), "prelight-item", &use_prelight, NULL);
+
+  if( !use_prelight )
+    goto default_handler;
+
+  active_menu_item = menu_shell->active_menu_item;
+  ((GtkMenuShellClass*)parent_class)->deactivate( menu_shell, user_data );
+
+  menu_bar = GTK_MENU_BAR (menu_shell);
+  priv = GTK_MENU_BAR_GET_PRIVATE (menu_bar);
+  if( priv->prelight_menu_item )
+  {
+    gtk_widget_set_state( priv->prelight_menu_item, GTK_STATE_PRELIGHT );
+  }
+default_handler:
+  return ((GtkMenuShellClass*)parent_class)->deactivate( menu_shell );
+}
+
 #define __GTK_MENU_BAR_C__
 #include "gtkaliasdef.c"
