[Review request] Handling Enter key presses on Buttons in JavaFX
jonathan.giles at oracle.com
Fri Jun 17 00:30:06 UTC 2016
Thanks for all your feedback. I think we have mostly coalesced around
doing the right thing per platform. I have therefore gone ahead and
posted a webrev for review as part of the following Jira issue:
In choosing this Jira issue to be the flag bearer for this particular
issue, I also closed other related issues as duplicate of this issue. I
may have missed some, but it was my intent to fold all discussion
related to the ENTER key behavior with buttons on various platforms into
this one issue. If you have any feedback on this patch or the direction
it takes, please follow-up in the jira issue above.
The other element that was raised as part of the discussion was that on
Windows the visual representation of the default button is only visible
when another button doesn't have the focus. This is because button focus
takes precedence over the default button. Because this is a visual
change (and the current code relates to the behavioral change), I
decided in this instance to create another Jira issue to track this:
On 8/06/16 9:47 AM, Jonathan Giles 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'
> 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
More information about the openjfx-dev