JDK-7150345 : [macosx] Can't type into applets at allstarpuzzles.com
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 7u4
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: os_x
  • CPU: x86
  • Submitted: 2012-03-01
  • Updated: 2012-07-04
  • Resolved: 2012-07-04
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
7u6 b03Fixed 8Fixed
Related Reports
Relates :  
You can't type into the applets at allstarpuzzles.com. They load, but anything requiring key input fails.

1. Install the Java plugin on Mac OS X.
2. Go to http://www.allstarpuzzles.com/cryptogram/02639.html
3. Click on a blank space
4. Press a letter key
---> No character draws. You should see the letter you typed.

Works with Apple's JDK 6.

SUGGESTED FIX JDK's changeset - http://hg.openjdk.java.net/jdk7u/jdk7u-dev/jdk/rev/e7d5379c96c6

EVALUATION There is a fix for this issue - the fix partically reverts the changes for 7129825 (which isn't valid for the embedded case) and introduces new focus handlers in CEmbeddedFrame class to track the "active" state of the top-level and the fix rejects focus requests if the top-level isn't active.

SUGGESTED FIX Here's a preliminary changes: http://spbweb.russia.sun.com/~dcherepa/macport/7150345/webrev-deploy/index.html http://spbweb.russia.sun.com/~dcherepa/macport/7150345/webrev-jdk/index.html

EVALUATION The issue is a regression of the fix for 7129825: http://hg.openjdk.java.net/jdk7u/jdk7u-osx/jdk/rev/bdf67b76a4f0 The fix for 7129825 started to reject cross-application activation requests in the plugin environment. Here's the code that rejects the focus requests: src/macosx/classes/sun/lwawt/LWWindowPeer.java public boolean requestWindowFocus(CausedFocusEvent.Cause cause) { ... // Cross-app activation requests are not allowed. if (cause != CausedFocusEvent.Cause.MOUSE_EVENT && !((LWToolkit)Toolkit.getDefaultToolkit()).isApplicationActive()) { focusLog.fine("the app is inactive, so the request is rejected"); return false; } ... }