aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Fokin <denis.fokin@jetbrains.com>2018-06-09 20:31:04 +0700
committerVitaly Provodin <vitaly.provodin@jetbrains.com>2018-10-11 14:38:13 +0700
commitde0f888093ced14951b5d3912a5dbdd3009fdf00 (patch)
tree4221320d416eeb8e82b1ff2d33263c3a89fa3297
parenta4dfd52014a5eec9560eec1e8f851ea9ba22d92f (diff)
downloadjdk8u_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.java2
-rw-r--r--src/solaris/classes/sun/awt/X11/XWindowPeer.java12
-rw-r--r--src/solaris/classes/sun/awt/X11/XlibUtil.java8
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")));
+ }
}