jdk8 Udiff src/macosx/classes/sun/lwawt/LWWindowPeer.java (original) (raw)

Print this page


@@ -796,10 +796,18 @@ mouseClickButtons = eventButtonMask; } else { mouseClickButtons |= eventButtonMask; }


@@ -912,24 +920,20 @@ * Called by the delegate when a key is pressed. */ public void dispatchKeyEvent(int id, long when, int modifiers, int keyCode, char keyChar, int keyLocation) { - KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance(); + LWKeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance(); Component focusOwner = kfmPeer.getCurrentFocusOwner(); - // Null focus owner may receive key event when - // application hides the focused window upon ESC press - // (AWT transfers/clears the focus owner) and pending ESC release - // may come to already hidden window. This check eliminates NPE. - if (focusOwner != null) { - KeyEvent event = - new KeyEvent(focusOwner, id, when, modifiers, - keyCode, keyChar, keyLocation); - LWComponentPeer peer = (LWComponentPeer)focusOwner.getPeer(); - peer.postEvent(event); + if (focusOwner == null) { + focusOwner = kfmPeer.getCurrentFocusedWindow(); + if (focusOwner == null) { + focusOwner = this.getTarget(); + } } + postEvent(new KeyEvent(focusOwner, id, when, modifiers, keyCode, keyChar, keyLocation)); } // ---- UTILITY METHODS ---- //

@@ -1258,11 +1262,11 @@ }

     kfmPeer.setCurrentFocusedWindow(becomesFocused ? getTarget() : null);

     int eventID = becomesFocused ? WindowEvent.WINDOW_GAINED_FOCUS : WindowEvent.WINDOW_LOST_FOCUS;