diff --git a/src/java/org/lwjgl/opengl/WindowsDisplay.java b/src/java/org/lwjgl/opengl/WindowsDisplay.java index 02d4681a..a4172a57 100644 --- a/src/java/org/lwjgl/opengl/WindowsDisplay.java +++ b/src/java/org/lwjgl/opengl/WindowsDisplay.java @@ -270,15 +270,10 @@ final class WindowsDisplay implements DisplayImplementation { parent.addFocusListener(parent_focus_tracker = new FocusAdapter() { public void focusGained(FocusEvent e) { parent_focused.set(true); - - // This is needed so that the last focused component AWT remembers is NOT our Canvas - WindowsDisplay.this.parent.setFocusable(false); - WindowsDisplay.this.parent.setFocusable(true); - - // Clear AWT focus owner - KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner(); + clearAWTFocus(); } }); + clearAWTFocus(); } grabFocus(); } catch (LWJGLException e) { @@ -397,6 +392,15 @@ final class WindowsDisplay implements DisplayImplementation { private static native void setForegroundWindow(long hwnd); private static native void setFocus(long hwnd); + private void clearAWTFocus() { + // This is needed so that the last focused component AWT remembers is NOT our Canvas + WindowsDisplay.this.parent.setFocusable(false); + WindowsDisplay.this.parent.setFocusable(true); + + // Clear AWT focus owner + KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner(); + } + private void grabFocus() { if ( parent == null ) setFocus(getHwnd());