OSDN Git Service

libjava/classpath/ChangeLog.gcj:
[pf3gnuchains/gcc-fork.git] / libjava / classpath / javax / swing / DefaultDesktopManager.java
index 11f03a7..cad8818 100644 (file)
@@ -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();
   }