--- /home/cpdev/src/classpath/javax/swing/plaf/basic/BasicMenuItemUI.java	2005-07-13 05:32:59.000000000 +0000
+++ javax/swing/plaf/basic/BasicMenuItemUI.java	2005-06-30 05:35:18.000000000 +0000
@@ -506,9 +506,11 @@
     br.width += insets.right + insets.left;
     br.height += insets.top + insets.bottom;
 
-    // Menu item is considered to be highlighted when it is selected.
-    if (m.isSelected() || m.getModel().isArmed() && 
-        (m.getParent() instanceof MenuElement)) 
+    /* Menu item is considered to be highlighted when it is selected.
+       It is considered to be selected if menu item is inside some menu
+       and is armed or if it is both armed and pressed */
+    if (m.getModel().isArmed()
+        && (m.getParent() instanceof MenuElement || m.getModel().isPressed()))
       {
 	if (m.isContentAreaFilled())
 	  {
@@ -604,9 +606,12 @@
       {
 	if (menuItem.isEnabled())
           {
-            // Menu item is considered to be highlighted when it is selected.
-            if (menuItem.isSelected() || menuItem.getModel().isArmed() && 
-                (menuItem.getParent() instanceof MenuElement)) 
+            /* Menu item is considered to be highlighted when it is selected.
+               It is considered to be selected if menu item is inside some menu
+               and is armed or if it is both armed and pressed */
+            if (menuItem.getModel().isArmed()
+                && (menuItem.getParent() instanceof MenuElement
+                    || menuItem.getModel().isPressed()))
               g.setColor(selectionForeground);
             else
               g.setColor(menuItem.getForeground());
@@ -614,10 +619,7 @@
 	else
 	  // FIXME: should fix this to use 'disabledForeground', but its
 	  // default value in BasicLookAndFeel is null.	  
-          
-          // FIXME: should there be different foreground colours for selected
-          // or deselected, when disabled?
-          g.setColor(Color.gray);
+	  g.setColor(Color.gray);
 
 	int mnemonicIndex = menuItem.getDisplayedMnemonicIndex();
 
