aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/javax/swing/JPopupMenu.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/javax/swing/JPopupMenu.java')
-rw-r--r--libjava/classpath/javax/swing/JPopupMenu.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/libjava/classpath/javax/swing/JPopupMenu.java b/libjava/classpath/javax/swing/JPopupMenu.java
index 74f733e..a54bd77 100644
--- a/libjava/classpath/javax/swing/JPopupMenu.java
+++ b/libjava/classpath/javax/swing/JPopupMenu.java
@@ -292,7 +292,6 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
public void updateUI()
{
setUI((PopupMenuUI) UIManager.getUI(this));
- invalidate();
}
/**
@@ -542,11 +541,25 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
this.visible = visible;
if (old != isVisible())
{
- firePropertyChange("visible", old, isVisible());
if (visible)
{
+ if (invoker != null && !(invoker instanceof JMenu))
+ {
+ MenuElement[] menuEls;
+ if (getSubElements().length > 0)
+ {
+ menuEls = new MenuElement[2];
+ menuEls[0] = this;
+ menuEls[1] = getSubElements()[0];
+ }
+ else
+ {
+ menuEls = new MenuElement[1];
+ menuEls[0] = this;
+ }
+ MenuSelectionManager.defaultManager().setSelectedPath(menuEls);
+ }
firePopupMenuWillBecomeVisible();
-
PopupFactory pf = PopupFactory.getSharedInstance();
pack();
popup = pf.getPopup(invoker, this, popupLocationX, popupLocationY);
@@ -554,9 +567,11 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
}
else
{
+ getSelectionModel().clearSelection();
firePopupMenuWillBecomeInvisible();
popup.hide();
}
+ firePropertyChange("visible", old, isVisible());
}
}