From 90585e045f2d3ce2d47f72143c9888b47c5f66a8 Mon Sep 17 00:00:00 2001 From: ant Date: Tue, 25 Mar 2008 18:08:57 +0300 Subject: [PATCH] 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 --- src/solaris/classes/sun/awt/X11/XDecoratedPeer.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java b/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java index 8aa308528..a930dfb2b 100644 --- a/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java +++ b/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java @@ -1013,6 +1013,16 @@ abstract class XDecoratedPeer extends XWindowPeer { 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); } -- GitLab