From b1ee5cc0015e702c8e13c3895f4b2344ab2aeacb Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Sequoia Date: Sun, 29 May 2016 14:01:38 -0700 Subject: [PATCH 1/3] XQuartz: Fix the issue where the h key could be come "stuck" after hiding XQuartz with cmd-h The issue was that we set a flag to ignore the k key's up event when sent the cmd-h down event, but because the cmd-h keycode hides XQuartz, we became !_x_active by the time the event is delivered which caused us to go down a differnet codepath rather than getting a chance to ignore it. We then incorrectly ignored the next h up key. https://bugs.freedesktop.org/show_bug.cgi?id=92648 Signed-off-by: Jeremy Huddleston Sequoia --- hw/xquartz/X11Application.m | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m index d2c5d30..9a22909 100644 --- a/hw/xquartz/X11Application.m +++ b/hw/xquartz/X11Application.m @@ -366,6 +366,15 @@ message_kit_thread(SEL selector, NSObject *arg) else { /* No kit window is focused, so send it to X. */ for_appkit = NO; + + /* Reset our swallow state if we're seeing the same keyCode again. + * This can happen if we become !_x_active when the keyCode we + * intended to swallow is delivered. See: + * https://bugs.freedesktop.org/show_bug.cgi?id=92648 + */ + if ([e keyCode] == swallow_keycode) { + do_swallow = NO; + } } } else { /* KeyUp */ -- 2.9.3