--- a/jdk/src/share/classes/java/awt/Component.java Sat May 12 17:46:00 2012 +0400
+++ b/jdk/src/share/classes/java/awt/Component.java Sat May 12 18:50:27 2012 +0400
@@ -7833,7 +7833,7 @@
if (focusLog.isLoggable(PlatformLogger.FINER)) {
focusLog.finer("clear global focus owner");
}
- KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
+ KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwnerPriv();
}
if (focusLog.isLoggable(PlatformLogger.FINER)) {
focusLog.finer("returning result: " + res);
@@ -7914,7 +7914,7 @@
if (focusLog.isLoggable(PlatformLogger.FINER)) {
focusLog.finer("clear global focus owner");
}
- KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
+ KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwnerPriv();
}
if (focusLog.isLoggable(PlatformLogger.FINER)) {
focusLog.finer("returning result: " + res);
@@ -7947,21 +7947,32 @@
if (rootAncestor != null) {
Container rootAncestorRootAncestor =
rootAncestor.getFocusCycleRootAncestor();
- KeyboardFocusManager.getCurrentKeyboardFocusManager().
- setGlobalCurrentFocusCycleRoot(
- (rootAncestorRootAncestor != null)
- ? rootAncestorRootAncestor
- : rootAncestor);
+
+ final Container fcr = (rootAncestorRootAncestor != null) ?
+ rootAncestorRootAncestor : rootAncestor;
+
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ KeyboardFocusManager.getCurrentKeyboardFocusManager().
+ setGlobalCurrentFocusCycleRoot(fcr);
+ return null;
+ }
+ });
rootAncestor.requestFocus(CausedFocusEvent.Cause.TRAVERSAL_UP);
} else {
- Window window = getContainingWindow();
+ final Window window = getContainingWindow();
if (window != null) {
Component toFocus = window.getFocusTraversalPolicy().
getDefaultComponent(window);
if (toFocus != null) {
- KeyboardFocusManager.getCurrentKeyboardFocusManager().
- setGlobalCurrentFocusCycleRoot(window);
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ KeyboardFocusManager.getCurrentKeyboardFocusManager().
+ setGlobalCurrentFocusCycleRoot(window);
+ return null;
+ }
+ });
toFocus.requestFocus(CausedFocusEvent.Cause.TRAVERSAL_UP);
}
}