changeset 197:8b34e2cde06f

6613426: two WM_TAKE_FOCUS messages on one mouse click in GNOME Metacity 2.16.0 Summary: A workaround to the metacity issue 485016. Reviewed-by: son
author ant
date Tue, 25 Mar 2008 18:08:57 +0300
parents f72baf3b4419
children 401d820d0b4a
files src/solaris/classes/sun/awt/X11/XDecoratedPeer.java
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	Mon Mar 24 15:51:26 2008 +0300
+++ b/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	Tue Mar 25 18:08:57 2008 +0300
@@ -1013,6 +1013,16 @@
 
     private void handleWmTakeFocus(XClientMessageEvent cl) {
         focusLog.log(Level.FINE, "WM_TAKE_FOCUS on {0}", new Object[]{this});
+        // A workaround to Metacity issue (see 6613426).
+        // The first check is to skip redundant WM_TAKE_FOCUS on click
+        // in a focused frame. The second check is to allow requesting focus
+        // on click in a frame when its owned window is currently focused.
+        if (this == getNativeFocusedWindowPeer() &&
+            target == XKeyboardFocusManagerPeer.getCurrentNativeFocusedWindow())
+        {
+            focusLog.fine("The window is already focused, skipping.");
+            return;
+        }
         requestWindowFocus(cl.get_data(1), true);
     }