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

John Hendrikx john.hendrikx at gmail.com
Sun Feb 12 22:28:09 UTC 2023


Well, it is not a permanent solution, just a way to test to see if it 
actually solves your problem.

--John

On 12/02/2023 23:23, Pedro Duque Vieira wrote:
> .. all in all of course, I'd prefer a solution that properly fixes 
> this bug and not have to rely on hacks that are prone to break in the 
> future or code that needs to circumvent encapsulation or the module 
> system. So either one is unlikely to be a fix I'm happy with.
>
> Thanks for considering submitting a PR to properly fix this issue!
>
> Kind regards,
>
>
>
> On Sun, Feb 12, 2023 at 10:15 PM Pedro Duque Vieira 
> <pedro.duquevieira at gmail.com> wrote:
>
>     John,
>
>     Thank you very much for submitting a work around. Unfortunately,
>     since there were other higher priority bugs and features and we're
>     very close to a release, I wasn't allocated time to work on this
>     much more than sending a message to this mailing list to warn
>     of the existence of this bug.
>     Not sure when I can get back to this. I'll submit your suggestion
>     to the dev team and if someone is allocated time to do it, I'll
>     get back here and let you know if it works.
>
>     There's also this suggestion that I forgot to mention (I haven't
>     been able to test it though):
>     https://stackoverflow.com/questions/65765656/release-mnemonic-when-application-loses-focus
>
>     Thanks again, kind regards,
>
>
>     On Sun, Feb 12, 2023 at 10:06 PM John Hendrikx
>     <john.hendrikx at gmail.com> wrote:
>
>         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
>
>
>
>     -- 
>     Pedro Duque Vieira - https://www.pixelduke.com
>
>
>
> -- 
> Pedro Duque Vieira - https://www.pixelduke.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20230212/c2d83796/attachment-0001.htm>


More information about the openjfx-dev mailing list