It's worth me quickly interjecting here to say that a button being default does not automatically imply that the button has the focus by default. Therefore, this suggestion is another behavioral change that needs to be carefully understood.

-- Jonathan

On 8/06/16 10:04 AM, Tomas Mikula wrote:
What about forgetting the whole notion of a "default button" and the only effect of setting the default property to true being that the button will start as focused?

So I add a question:

3) Would anyone miss the "default button"?

Tomas

On Tue, Jun 7, 2016 at 5:47 PM, Jonathan Giles <jonathan.gi...@oracle.com <mailto:jonathan.gi...@oracle.com>> wrote:

    Hi all,

    One thing I've been looking into recently is the issue of what the
    Enter key should do when it is pushed with regards to buttons in a
    UI where one of those buttons is a 'default' button. There are
    number of Jira issues on this topic, and I wanted to poll the
    community to understand its opinions.

    The current situation is that the Enter key does not fire the
    focused Button. The Enter key is reserved for firing the 'default'
    Button in the UI (i.e. if someone has created a Button instance
    with the default property set to true). A default button is
    rendered slightly differently (in Modena it is blue for example).
    To fire the focused Button, the user must press the Space key.

    Tom Schindl filed a bug (JDK-8139510) that is a good example of
    the 'problem' this creates. In the bug report, a dialog is shown
    to the user. In the dialog is an OK button and a Cancel button.
    The OK button has been made the 'default' button. Regardless of
    which button has focus, the Enter key always fires the OK button.
    The only way to fire the Cancel button is via the Space key. This
    can be very confusing for users who have tabbed specifically to
    the 'Cancel' button and then pressed the Enter key, only to find
    they unwittingly fired the 'OK' action.

    To me this has always been a little counter-intuitive, because of
    my heritage as a long-time Windows user. I believe Linux is much
    the same as Windows. For others who grew up on Mac, I'm less sure
    on what people expect (but it seems to be that the Enter key fires
    the default button, not the focused button, i.e. JavaFX current
    behavior matches what is expected on OS X).

    What I'm proposing we do is to change the behavior as follows:

    1) On OS X we do not change behavior at all - we keep the current
    'Enter means default' and 'Space means focus' semantics.

    2) On non-OS X platforms, we change the behavior so that Enter
    (and Space) will fire the _focused_ key, if one is focused. If no
    Button is focused (e.g. focus is in a TextField, etc), then Enter
    will work as it currently does and fire the default button, if one
    is specified. In short, default buttons will still be rendered
    blue to hint to the user that they are the default button, but
    they will be less prevalently fired by Enter key presses - only
    when they also have focus.

    The two questions that I have are:

    1) Will this confuse users when there is a behavior change (and
    presumably, this change will be made in JDK 9 and not backported
    to JDK 8). If it will confuse users, is it still the right thing
    to do?

    2) Do we want to have different behaviors for OS X and non-OS X?
    I'm a newly inducted member into the cult of Mac, and I don't yet
    have all my bearings sorted out, so I don't have a strong opinion
    here.

    Your thoughts, as always, are appreciated.
    -- Jonathan



Reply via email to