< prev index next >
src/java.desktop/unix/classes/sun/awt/X11/XDecoratedPeer.java
Print this page
@@ -1008,12 +1008,27 @@
private void handleWmTakeFocus(XClientMessageEvent cl) {
if (focusLog.isLoggable(PlatformLogger.Level.FINE)) {
focusLog.fine("WM_TAKE_FOCUS on {0}", this);
}
+
+ if (XWM.getWMID() == XWM.UNITY_COMPIZ_WM) {
+ // JDK-8159460
+ Window focusedWindow = XKeyboardFocusManagerPeer.getInstance()
+ .getCurrentFocusedWindow();
+ Window activeWindow = XWindowPeer.getDecoratedOwner(focusedWindow);
+ if (activeWindow != target) {
+ requestWindowFocus(cl.get_data(1), true);
+ } else {
+ WindowEvent we = new WindowEvent(focusedWindow,
+ WindowEvent.WINDOW_GAINED_FOCUS);
+ sendEvent(we);
+ }
+ } else {
requestWindowFocus(cl.get_data(1), true);
}
+ }
/**
* Requests focus to this decorated top-level by requesting X input focus
* to the shell window.
*/
< prev index next >