On Wed, 19 Jan 2022 16:25:17 GMT, Martin Fox <d...@openjdk.java.net> wrote:

>> When a window is closed while handling performKeyEquivalent the same NSEvent 
>> might be passed to the new key window causing it to being processed twice. 
>> Long ago a fix was put in for this case; when the GlassWindow was closed a 
>> flag was set to ensure that we would return YES from performKeyEquivalent. 
>> To fix RT-39813 the closing of the window was deferred causing the flag to 
>> be set too late. This PR simply sets that flag when we schedule the close 
>> event instead of when the OS actually closes the window.
>> 
>> This is a spot-fix for a larger problem, namely that we have no way of 
>> knowing whether a performKeyEquivalent event was consumed or not. The 
>> changes for fixing that are in PR #694. The changes got bundled into that PR 
>> only because there's a lot of files involved and the exact same code paths 
>> are touched.
>> 
>> System test is included (I'm surprised, it really is possible to generate 
>> Cmd+Enter using a Robot). This is new territory for me so I have a manual 
>> test I can submit as a backup.
>
> Martin Fox has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Renamed test to match existing conventions along with minor cleanup.

The fix and test both look good, with one requested code style change. I can 
confirm that the test fails without the fix and passes with the fix.

Also, In order to avoid problems with our CI and nightly build, I want #720 to 
be integrated before this PR.

tests/system/src/test/java/test/robot/javafx/scene/DoubleShortcutProcessingTest.java
 line 25:

> 23:  * questions.
> 24:  */
> 25: package test.robot.javafx.scene;

Very minor: we usually add a blank line between the copyright header block and 
the `package` statement. I only mention it because I have another change to 
request.

tests/system/src/test/java/test/robot/javafx/scene/DoubleShortcutProcessingTest.java
 line 67:

> 65:         waitForLatch(dialogLatch, 5, "Dialog never received shortcut");
> 66:         if (testApp.failed())
> 67:             Assertions.fail("performKeyEquivalent was handled twice in 
> separate windows");

Please add curly braces around the target of the `if` statement. The only 
exception to this rule for Java code is where the statement is short enough to 
be on the same line as the `if`.

-------------

PR: https://git.openjdk.java.net/jfx/pull/715

Reply via email to