jdk/src/share/classes/java/awt/Component.java
changeset 12651 8c69dd24bf07
parent 12643 5d709010bb1d
child 12666 0799075de9d6
--- 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);
                 }
             }