On Sun, 22 Oct 2023 21:25:45 GMT, Martin Fox <d...@openjdk.org> wrote:

>> This PR addresses [JDK-8284445](https://bugs.openjdk.org/browse/JDK-8284445).
>> 
>> Context: the warning might be more important than it seems. Our JavaFX-based 
>> desktop app has [an issue](https://github.com/defold/defold/issues/7845) — 
>> when the user opens 2 instances of the app, one of the instances hangs after 
>> a while. While debugging the issue, I found that it's somehow related to the 
>> system menu bar — not refreshing it fixes the issue. Further investigations 
>> revealed that the app hangs only if we show menus that use F1-F24 shortcuts. 
>> This reminded me of the warnings we get about `NSEventModifierFlagFunction 
>> specified to -setKeyEquivalentModifierMask` for such shortcuts. I 
>> experimented with removing the modifier for these shortcuts, and it helped 
>> with our issue!
>
> With this change the Quit menu item shows up as Cmd+F2.
> 
> To fix the bug we just need to stop setting the NSFunctionKeyMask in the 
> equivalent's modifier mask. The rest of the code removed in this PR needs to 
> be restored.
> 
> When the core code is converting from Java internals to the data structure 
> passed to Glass it only has one field to specify the shortcut. Normally this 
> is a character but for keys like F2 it passes down a Java KeyCode. To signal 
> the difference it sets the MODIFIER_FUNCTION flag. Otherwise it can't 
> distinguish KeyCode F2 from character Q.
> 
> The naming of this flag is confusing since it's not a modifier but a bit used 
> solely for this purpose. And I don't know why this flag is set only for the 
> function keys, it should be set whenever the core code is passing down a 
> KeyCode rather than a character. This is probably part of what's going wrong 
> in [JDK-8088445](https://bugs.openjdk.org/browse/JDK-8088445).

@beldenfox it's ready for review again :)

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

PR Comment: https://git.openjdk.org/jfx/pull/1252#issuecomment-1786695730

Reply via email to