SUGGESTED FIX
------- Component.java -------
*** /tmp/sccs.CRayyO Thu Sep 1 14:31:34 2005
--- Component.java Thu Sep 1 14:30:55 2005
***************
*** 48,59 ****
import java.awt.GraphicsConfiguration;
import java.security.AccessController;
import java.security.PrivilegedAction;
import javax.accessibility.*;
import java.lang.ref.*;
-
import java.util.logging.*;
import sun.security.action.GetPropertyAction;
import sun.awt.AppContext;
import sun.awt.SunToolkit;
import sun.awt.ConstrainableGraphics;
--- 48,59 ----
import java.awt.GraphicsConfiguration;
import java.security.AccessController;
import java.security.PrivilegedAction;
import javax.accessibility.*;
import java.lang.ref.*;
import java.util.logging.*;
+ import java.applet.Applet;
import sun.security.action.GetPropertyAction;
import sun.awt.AppContext;
import sun.awt.SunToolkit;
import sun.awt.ConstrainableGraphics;
***************
*** 61,70 ****
--- 61,71 ----
import sun.awt.SubRegionShowable;
import sun.awt.WindowClosingListener;
import sun.awt.WindowClosingSupport;
import sun.awt.GlobalCursorManager;
import sun.awt.CausedFocusEvent;
+ import sun.awt.EmbeddedFrame;
import sun.awt.dnd.SunDropTargetEvent;
import sun.awt.im.CompositionArea;
import sun.java2d.SunGraphics2D;
/**
***************
*** 7181,7191 ****
public void nextFocus() {
nextFocusHelper();
}
boolean nextFocusHelper() {
! return postNextFocusHelper(preNextFocusHelper());
}
Component preNextFocusHelper() {
Container rootAncestor = getFocusCycleRootAncestor();
Component comp = this;
--- 7182,7196 ----
public void nextFocus() {
nextFocusHelper();
}
boolean nextFocusHelper() {
! Component toFocus = preNextFocusHelper();
! if (isFocusOwner() && toFocus == this) {
! return false;
! }
! return postNextFocusHelper(toFocus);
}
Component preNextFocusHelper() {
Container rootAncestor = getFocusCycleRootAncestor();
Component comp = this;
***************
*** 7202,7211 ****
--- 7207,7222 ----
rootAncestor.getFocusTraversalPolicy();
Component toFocus = policy.getComponentAfter(rootAncestor, comp);
if (toFocus == null) {
toFocus = policy.getDefaultComponent(rootAncestor);
}
+ if (toFocus == null) {
+ Applet applet = EmbeddedFrame.getAppletIfAncestorOf(this);
+ if (applet != null) {
+ toFocus = applet;
+ }
+ }
return toFocus;
}
return null;
}
------- EmbeddedFrame.java -------
*** /tmp/sccs.r9ayGO Thu Sep 1 14:31:35 2005
--- EmbeddedFrame.java Thu Sep 1 14:27:57 2005
***************
*** 19,28 ****
--- 19,30 ----
import java.lang.reflect.Field;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import java.util.Set;
import java.awt.AWTKeyStroke;
+ import java.applet.Applet;
+ import sun.applet.AppletPanel;
/**
* A generic container used for embedding Java components, usually applets.
* An EmbeddedFrame has two related uses:
*
***************
*** 487,496 ****
--- 489,517 ----
public void toBack() {}
public abstract void registerAccelerator(AWTKeyStroke stroke);
public abstract void unregisterAccelerator(AWTKeyStroke stroke);
+ /*
+ * Checks if the component is in an EmbeddedFrame. If so,
+ * returns the applet found in the hierarchy or null if
+ * not found.
+ * @return the parent applet or {@ null}
+ * @since JDK1.6
+ */
+ public static Applet getAppletIfAncestorOf(Component comp) {
+ Container parent = comp.getParent();
+ Applet applet = null;
+ while (parent != null && !(parent instanceof EmbeddedFrame)) {
+ if (parent instanceof Applet) {
+ applet = (Applet)parent;
+ }
+ parent = parent.getParent();
+ }
+ return parent == null ? null : applet;
+ }
+
private static class NullEmbeddedFramePeer
extends NullComponentPeer implements FramePeer {
public void setTitle(String title) {}
public void setIconImage(Image im) {}
public void setMenuBar(MenuBar mb) {}
|