changeset 5315:2d8275793306

7156191: [macosx] Can't type into applet demos in Pivot Reviewed-by: ant, art
author andrew
date Wed, 12 Jun 2013 11:35:38 +0100
parents fb619d31dd14
children a3084cc2eb4d
files src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java src/macosx/classes/sun/lwawt/macosx/CPlatformView.java src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
diffstat 4 files changed, 16 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java	Fri Mar 16 19:59:04 2012 +0400
+++ b/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java	Wed Jun 12 11:35:38 2013 +0100
@@ -106,28 +106,19 @@
 
     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));
-     }
-
 }
--- a/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java	Fri Mar 16 19:59:04 2012 +0400
+++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java	Wed Jun 12 11:35:38 2013 +0100
@@ -213,4 +213,8 @@
             }
         }
     }
+
+    void handleWindowFocusEvent(boolean gained) {
+        peer.notifyActivation(gained);
+    }
 }
--- a/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java	Fri Mar 16 19:59:04 2012 +0400
+++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java	Wed Jun 12 11:35:38 2013 +0100
@@ -50,9 +50,9 @@
         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 = createCGLayer();
--- a/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java	Fri Mar 16 19:59:04 2012 +0400
+++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java	Wed Jun 12 11:35:38 2013 +0100
@@ -205,6 +205,7 @@
     private LWWindowPeer peer;
     protected CPlatformView contentView;
     protected CPlatformWindow owner;
+    private CPlatformResponder responder;
     protected 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
@@ -228,8 +229,9 @@
 
         final int styleBits = getInitialStyleBits();
 
+        responder = createPlatformResponder();
         contentView = createContentView();
-        contentView.initialize(peer);
+        contentView.initialize(peer, responder);
 
         final long nativeWindowPtr = nativeCreateNSWindow(contentView.getAWTView(), styleBits, 0, 0, 0, 0);
         setPtr(nativeWindowPtr);
@@ -677,6 +679,7 @@
             focusLogger.fine("the app is inactive, so the request is rejected");
             return true;
         }
+        responder.handleWindowFocusEvent(gained);
         return false;
     }