7156191: [macosx] Can't type into applet demos in Pivot

Reviewed-by: art
This commit is contained in:
Dmitry Cherepanov 2012-05-18 19:39:24 +04:00
parent 4a46c4fa60
commit 7f4d14efbe
4 changed files with 16 additions and 19 deletions

View File

@ -112,28 +112,19 @@ public class CEmbeddedFrame extends EmbeddedFrame {
public void handleFocusEvent(boolean focused) {
this.focused = focused;
updateOverlayWindowActiveState();
if (parentWindowActive) {
responder.handleWindowFocusEvent(focused);
}
}
public void handleWindowFocusEvent(boolean parentWindowActive) {
this.parentWindowActive = parentWindowActive;
updateOverlayWindowActiveState();
if (focused) {
responder.handleWindowFocusEvent(parentWindowActive);
}
}
public boolean isParentWindowActive() {
return parentWindowActive;
}
/*
* May change appearance of contents of window, and generate a
* WINDOW_ACTIVATED event.
*/
private void updateOverlayWindowActiveState() {
final boolean showAsFocused = parentWindowActive && focused;
dispatchEvent(
new FocusEvent(this, showAsFocused ?
FocusEvent.FOCUS_GAINED :
FocusEvent.FOCUS_LOST));
}
}

View File

@ -204,4 +204,8 @@ final class CPlatformResponder {
}
}
}
void handleWindowFocusEvent(boolean gained) {
peer.notifyActivation(gained);
}
}

View File

@ -49,9 +49,9 @@ public class CPlatformView extends CFRetainedResource {
super(0, true);
}
public void initialize(LWWindowPeer peer) {
public void initialize(LWWindowPeer peer, CPlatformResponder responder) {
this.peer = peer;
this.responder = new CPlatformResponder(peer, false);
this.responder = responder;
if (!LWCToolkit.getSunAwtDisableCALayers()) {
this.windowLayer = new CGLLayer(peer);

View File

@ -208,6 +208,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
private boolean visible = false; // visibility status from native perspective
private boolean undecorated; // initialized in getInitialStyleBits()
private Rectangle normalBounds = null; // not-null only for undecorated maximized windows
private CPlatformResponder responder;
public CPlatformWindow(final PeerType peerType) {
super(0, true);
@ -232,8 +233,9 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
final long parentNSWindowPtr = (owner != null ? owner.getNSWindowPtr() : 0);
String warningString = target.getWarningString();
responder = new CPlatformResponder(peer, false);
contentView = new CPlatformView();
contentView.initialize(peer);
contentView.initialize(peer, responder);
final long nativeWindowPtr = nativeCreateNSWindow(contentView.getAWTView(), styleBits, 0, 0, 0, 0);
setPtr(nativeWindowPtr);
@ -865,7 +867,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
focusLogger.fine("the app is inactive, so the notification is ignored");
return;
}
peer.notifyActivation(gained);
responder.handleWindowFocusEvent(gained);
}
private void deliverMoveResizeEvent(int x, int y, int width, int height) {