diff options
author | Denis Fokin <denis.fokin@jetbrains.com> | 2018-06-09 20:31:04 +0700 |
---|---|---|
committer | Vitaly Provodin <vitaly.provodin@jetbrains.com> | 2018-10-11 14:38:13 +0700 |
commit | de0f888093ced14951b5d3912a5dbdd3009fdf00 (patch) | |
tree | 4221320d416eeb8e82b1ff2d33263c3a89fa3297 | |
parent | a4dfd52014a5eec9560eec1e8f851ea9ba22d92f (diff) | |
download | jdk8u_jdk-de0f888093ced14951b5d3912a5dbdd3009fdf00.tar.gz |
JRE-763 access denied: java.util.PropertyPermission com.jetbrains.suppressWindowRaise readjb8u152-b1248.15
(cherry picked from commit 828437201ded30814155ddf8afe91d283dfec6b8)
-rw-r--r-- | src/solaris/classes/sun/awt/X11/XBaseWindow.java | 2 | ||||
-rw-r--r-- | src/solaris/classes/sun/awt/X11/XWindowPeer.java | 12 | ||||
-rw-r--r-- | src/solaris/classes/sun/awt/X11/XlibUtil.java | 8 |
3 files changed, 18 insertions, 4 deletions
diff --git a/src/solaris/classes/sun/awt/X11/XBaseWindow.java b/src/solaris/classes/sun/awt/X11/XBaseWindow.java index da2c3a3dda..8153d2c38b 100644 --- a/src/solaris/classes/sun/awt/X11/XBaseWindow.java +++ b/src/solaris/classes/sun/awt/X11/XBaseWindow.java @@ -562,7 +562,7 @@ public class XBaseWindow { public void toFront() { XToolkit.awtLock(); try { - if (Boolean.parseBoolean(System.getProperty("com.jetbrains.suppressWindowRaise", "false"))) { + if (XlibUtil.isRaiseAllowed()) { XlibWrapper.XLowerWindow(XToolkit.getDisplay(), getWindow()); } else { XlibWrapper.XRaiseWindow(XToolkit.getDisplay(), getWindow()); diff --git a/src/solaris/classes/sun/awt/X11/XWindowPeer.java b/src/solaris/classes/sun/awt/X11/XWindowPeer.java index 12fad951b1..6fdeccdc07 100644 --- a/src/solaris/classes/sun/awt/X11/XWindowPeer.java +++ b/src/solaris/classes/sun/awt/X11/XWindowPeer.java @@ -630,7 +630,11 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, public void handleWindowFocusInSync(long serial) { WindowEvent we = new WindowEvent((Window)target, WindowEvent.WINDOW_GAINED_FOCUS); XKeyboardFocusManagerPeer.getInstance().setCurrentFocusedWindow((Window) target); - sendEvent(we); + if (EventQueue.isDispatchThread()) { + ((Component)we.getSource()).dispatchEvent(we); + } else { + sendEvent(we); + } } // NOTE: This method may be called by privileged threads. // DO NOT INVOKE CLIENT CODE ON THIS THREAD! @@ -1398,7 +1402,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, */ XToolkit.awtLock(); try { - if (Boolean.parseBoolean(System.getProperty("com.jetbrains.suppressWindowRaise", "false"))) { + System.err.println("Everything has changed"); + if (XlibUtil.isRaiseAllowed()) + { XlibWrapper.XLowerWindow(XToolkit.getDisplay(), getWindow()); } else { XlibWrapper.XRaiseWindow(XToolkit.getDisplay(), getWindow()); @@ -2017,7 +2023,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, this.visible = visible; if (visible) { applyWindowType(); - if (Boolean.parseBoolean(System.getProperty("com.jetbrains.suppressWindowRaise", "false"))) { + if (XlibUtil.isRaiseAllowed()) { XlibWrapper.XMapWindow(XToolkit.getDisplay(), getWindow()); } else { XlibWrapper.XMapRaised(XToolkit.getDisplay(), getWindow()); diff --git a/src/solaris/classes/sun/awt/X11/XlibUtil.java b/src/solaris/classes/sun/awt/X11/XlibUtil.java index f06af9856a..47983b50ea 100644 --- a/src/solaris/classes/sun/awt/X11/XlibUtil.java +++ b/src/solaris/classes/sun/awt/X11/XlibUtil.java @@ -30,6 +30,8 @@ import java.awt.GraphicsEnvironment; import java.awt.Point; import java.awt.Rectangle; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -406,4 +408,10 @@ public class XlibUtil return 1 << (7 + button); } } + + + static Boolean isRaiseAllowed() { + return AccessController.doPrivileged((PrivilegedAction<Boolean>) () -> + Boolean.parseBoolean(System.getProperty("com.jetbrains.suppressWindowRaise", "false"))); + } } |