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.duquevie...@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.hendr...@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

Reply via email to