From 9ffdd18a3fa00c13a4b399c945ea75417e78b885 Mon Sep 17 00:00:00 2001 From: Ioannis Tsakpinis Date: Thu, 23 Aug 2012 12:38:45 +0000 Subject: [PATCH] Filter TAB key up event when we alt-tab focus the Display. --- src/java/org/lwjgl/opengl/WindowsKeyboard.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/java/org/lwjgl/opengl/WindowsKeyboard.java b/src/java/org/lwjgl/opengl/WindowsKeyboard.java index 5f871274..1effdb6f 100644 --- a/src/java/org/lwjgl/opengl/WindowsKeyboard.java +++ b/src/java/org/lwjgl/opengl/WindowsKeyboard.java @@ -150,7 +150,14 @@ final class WindowsKeyboard { } } + private static boolean isKeyPressed(int state) { + return (state & 1) == 1; + } + public void handleKey(int virt_key, int scan_code, boolean extended, byte event_state, long millis, boolean repeat) { + if ( isKeyPressed(event_state) == isKeyPressed(virt_key_down_buffer[virt_key]) ) + return; + virt_key = translateExtended(virt_key, scan_code, event_state, extended); flushRetained(); has_retained_event = true; @@ -169,7 +176,7 @@ final class WindowsKeyboard { public void fireLostKeyEvents() { for ( int i = 0; i < virt_key_down_buffer.length; i++ ) { - if ( (virt_key_down_buffer[i] & 1) == 1 && (GetAsyncKeyState(i) & 1) == 0 ) + if ( isKeyPressed(virt_key_down_buffer[i]) && !isKeyPressed(GetAsyncKeyState(i)) ) handleKey(i, 0, false, (byte)0, System.currentTimeMillis(), false); } }