summaryrefslogtreecommitdiff
path: root/java/awt/Frame.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/awt/Frame.java')
-rw-r--r--java/awt/Frame.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/java/awt/Frame.java b/java/awt/Frame.java
index e0c0d1ff3..d5cc7f531 100644
--- a/java/awt/Frame.java
+++ b/java/awt/Frame.java
@@ -488,7 +488,10 @@ public class Frame extends Window implements MenuContainer
private static void noteFrame(Frame f)
{
- weakFrames.add(new WeakReference(f));
+ synchronized (weakFrames)
+ {
+ weakFrames.add(new WeakReference(f));
+ }
}
public static Frame[] getFrames()
@@ -536,8 +539,7 @@ public class Frame extends Window implements MenuContainer
public int getState()
{
- // FIXME: State might have changed in the peer... Must check.
- return (state & ICONIFIED) != 0 ? ICONIFIED : NORMAL;
+ return (getExtendedState() & ICONIFIED) != 0 ? ICONIFIED : NORMAL;
}
/**
@@ -545,7 +547,13 @@ public class Frame extends Window implements MenuContainer
*/
public void setExtendedState(int state)
{
- this.state = state;
+ if (getToolkit().isFrameStateSupported(state))
+ {
+ this.state = state;
+ FramePeer p = (FramePeer) peer;
+ if (p != null)
+ p.setState(state);
+ }
}
/**
@@ -553,6 +561,9 @@ public class Frame extends Window implements MenuContainer
*/
public int getExtendedState()
{
+ FramePeer p = (FramePeer) peer;
+ if (p != null)
+ state = p.getState();
return state;
}