--- old/src/macosx/classes/sun/lwawt/LWWindowPeer.java 2012-08-17 21:11:55.000000000 +0400 +++ new/src/macosx/classes/sun/lwawt/LWWindowPeer.java 2012-08-17 21:11:55.000000000 +0400 @@ -232,8 +232,7 @@ // TODO: update graphicsConfig, see 4868278 platformWindow.setVisible(visible); if (isSimpleWindow()) { - LWKeyboardFocusManagerPeer manager = LWKeyboardFocusManagerPeer. - getInstance(getAppContext()); + KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance(); if (visible) { if (!getTarget().isAutoRequestFocus()) { @@ -242,7 +241,7 @@ requestWindowFocus(CausedFocusEvent.Cause.ACTIVATION); } // Focus the owner in case this window is focused. - } else if (manager.getCurrentFocusedWindow() == getTarget()) { + } else if (kfmPeer.getCurrentFocusedWindow() == getTarget()) { // Transfer focus to the owner. LWWindowPeer owner = getOwnerFrameDialog(LWWindowPeer.this); if (owner != null) { @@ -853,9 +852,8 @@ public void dispatchKeyEvent(int id, long when, int modifiers, int keyCode, char keyChar, int keyLocation) { - LWComponentPeer focusOwner = - LWKeyboardFocusManagerPeer.getInstance(getAppContext()). - getFocusOwner(); + KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance(); + Component focusOwner = kfmPeer.getCurrentFocusOwner(); // Null focus owner may receive key event when // application hides the focused window upon ESC press @@ -863,9 +861,10 @@ // may come to already hidden window. This check eliminates NPE. if (focusOwner != null) { KeyEvent event = - new KeyEvent(focusOwner.getTarget(), id, when, modifiers, + new KeyEvent(focusOwner, id, when, modifiers, keyCode, keyChar, keyLocation); - focusOwner.postEvent(event); + LWComponentPeer peer = (LWComponentPeer)focusOwner.getPeer(); + peer.postEvent(event); } } @@ -1182,10 +1181,8 @@ } } - LWKeyboardFocusManagerPeer manager = LWKeyboardFocusManagerPeer. - getInstance(getAppContext()); - - Window oppositeWindow = becomesFocused ? manager.getCurrentFocusedWindow() : null; + KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance(); + Window oppositeWindow = becomesFocused ? kfmPeer.getCurrentFocusedWindow() : null; // Note, the method is not called: // - when the opposite (gaining focus) window is an owned/owner window. @@ -1198,7 +1195,7 @@ grabbingWindow.ungrab(); } - manager.setFocusedWindow(becomesFocused ? LWWindowPeer.this : null); + kfmPeer.setCurrentFocusedWindow(becomesFocused ? getTarget() : null); int eventID = becomesFocused ? WindowEvent.WINDOW_GAINED_FOCUS : WindowEvent.WINDOW_LOST_FOCUS; WindowEvent windowEvent = new WindowEvent(getTarget(), eventID, oppositeWindow);