Alt key sticks even after app loses focus (JDK-8090647)

John Hendrikx john.hendrikx at gmail.com
Sun Feb 12 22:06:24 UTC 2023


I'm not sure if you are able to test this yourself, but I made a fix for 
this problem.

You could potentially test it by copying the class `javafx.scene.Scene` 
in your project (without changing the package -- and if modules will 
allow it, I don't use them personally) and then using this piece of code:

     private void setWindowFocused(boolean value) {
         windowFocused = value;

         Node node = getFocusOwner();
         if (node != null) {
             node.setFocusQuietly(windowFocused, focusOwner.focusVisible);
             node.notifyFocusListeners();
         }

         if (windowFocused && accessible != null) {
accessible.sendNotification(AccessibleAttribute.FOCUS_NODE);
         }

         if (!windowFocused) {
getInternalEventDispatcher().getKeyboardShortcutsHandler().setMnemonicsDisplayEnabled(false);
         }
     }

The last three lines are what I added. A quick test on Windows here 
shows that the mnemonics get disabled as soon as the window loses focus, 
and when returning, they're not responding as you'd expect.

I'll submit a PR as well.

--John

On 12/02/2023 15:52, Pedro Duque Vieira wrote:
>
>     The behavior on Windows is all over the place for different
>     applications.? I tested a few I've got running:
>
>
>     Notepad, Notepad++, Eclipse:
>
>
>     - Alt-down: Shows mnemonics on menu bar
>     - Alt-up: Highlights file menu on alt release
>     - Alt-tab: Shows mnemonics but doesn't highlight menu when it loses
>     focus; when returning, mnemonics still highlighted, but doesn't act on
>     them as menu not selected
>
>
>     -> Looks buggy
>
>
>     Thunderbird / Opera / Firefox:
>
>
>     - Alt-down: nothing
>     - Alt-up: shows menu bar (it is hidden normally)
>     - Alt-tab: works as expected, no highlighting
>
>
>     -> Looks well behaved
>
>
>     Explorer / Excel / Wordpad:
>
>
>     - Alt-down: nothing
>     - Alt-up: shows mnemonics
>     - Alt-tab: works as expected, no highlighting
>
>
>     -> Looks well behaved
>
>
>     Visual Studio Code:
>
>
>     - Alt-down: Shows mnemonics on menu bar
>     - Alt-up: Highlights file menu on alt release
>     - Alt-tab: Shows mnemonics, but hides them once it loses focus; on
>     return doesn't show mnemonics
>
>
>     -> Looks well behaved
>
>
>     Chrome / IntelliJ:
>
>
>     -> Looks well behaved, doesn't react to alt presses in any way
>
>
>     None of the applications tested reacted on a mnemonic key after
>     regaining focus however, even though they may have them still
>     highlighted (which I think is a bug).
>
>
>     In my opinion, the behavior of notepad/notepad++/eclipse is incorrect
>     (they need to hide the mnemonics on focus lost, like Visual Studio
>     Code
>     does, but they don't).
>
>
>     There seems to be two correct ways of handling mnemonics in
>     applications
>     that use them, either:
>
>
>     a) shows mnemonics immediately on alt-down, but hide them on focus
>     lost
>     (if the alt-down becomes an alt-tab, or probably any other alt
>     combination)
>
>
>     b) only show mnemonics on a naked alt-up
>
>
>     Ticket JDK-8090647 mentions a spec that has been updated, but I can't
>     find it.? It also mentions that the behavior for JavaFX should be
>     what I
>     described in a), so I think this is a bug that can simply be fixed.
>
>
>     --John
>
>
>
> Yap, there's quite different behaviors across apps. If you test on 
> windows 11 you'll get yet another set of different behaviors.
>
> But all in all, if you: alt+tab (without release) and alt+tab again so 
> your app regains focus, you'll have the mnemonic still activated, 
> which, as you say, sounds like a bug no matter the difference in 
> behaviors across apps.
>
> I agree with your suggestion: "a".
>
> My client was quite disappointed and started to rant about javafx. It 
> didn't help that we were hit by a couple other bugs (perhaps bad 
> luck).  The fact that the bug was filed on 2013 (10 years later) and 
> is still happening can be quite problematic.
> Perhaps it would make sense to review all bugs filed, giving highest 
> priority to the bugs that were submitted longer ago?
>
> Thanks!
>
> -- 
> Pedro Duque Vieira - https://www.pixelduke.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20230212/6845f19b/attachment.htm>


More information about the openjfx-dev mailing list