diff options
Diffstat (limited to 'libjava/classpath/javax/swing/DefaultDesktopManager.java')
-rw-r--r-- | libjava/classpath/javax/swing/DefaultDesktopManager.java | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/libjava/classpath/javax/swing/DefaultDesktopManager.java b/libjava/classpath/javax/swing/DefaultDesktopManager.java index 11f03a715c4..cad88186f22 100644 --- a/libjava/classpath/javax/swing/DefaultDesktopManager.java +++ b/libjava/classpath/javax/swing/DefaultDesktopManager.java @@ -293,21 +293,35 @@ public class DefaultDesktopManager implements DesktopManager, Serializable public void activateFrame(JInternalFrame frame) { JDesktopPane p = frame.getDesktopPane(); - + JInternalFrame active = null; if (p != null) - p.setSelectedFrame(frame); - else + active = p.getSelectedFrame(); + if (active == null) { - try + if (p != null) { - frame.setSelected(true); + p.setSelectedFrame(frame); } - catch (PropertyVetoException e) + } + else if (active != frame) + { + if (active.isSelected()) { - // Do nothing if attempt is vetoed. + try + { + active.setSelected(false); + } + catch (PropertyVetoException ex) + { + // Not allowed. + } } + if (p != null) + { + p.setSelectedFrame(frame); + } + } - frame.toFront(); } |