This change modifies `ScrollPaneBehavior` to only consume keys that are 
targetted at it.  As `KeyEvent`s are in almost all cases only intended for the 
targetted node (as visually that's where the user expects the keyboard input to 
go, as per normal UI rules) consuming key events that bubble up is simply 
incorrect.  When the `ScrollPane` is focused directly (it has the focused 
border) then it is fine for it to respond to all kinds of keys.

In FX controls normally there is no need to check if a `Control` is focused 
(although they probably should **all** do this) as they do not have children 
that could have received the Key Events involved, and Key Events are always 
sent to the focused Node.  When `ScrollPane` was developed this was not taken 
into account, leading to it consuming keys not intended for it.

This fixes several unexpected problems for custom control builders.  A custom 
control normally benefits from standard navigation out of the box 
(TAB/shift+TAB) and directional keys.  However, this breaks down as soon as 
this custom control is positioned within a `ScrollPane`, which is very 
surprising behavior and not at all expected.  This makes it harder than needed 
for custom control developers to get the standard navigation for the 
directional keys, as they would have to specifically capture those keys before 
they reach the `ScrollPane` and trigger the correct navigation action 
themselves (for which as of this writing there is no public API).

The same goes for all the other keys captured by `ScrollPane` when it does not 
have focus, although not as critical as the UP/DOWN/LEFT/RIGHT keys.

-------------

Commit messages:
 - Stop ScrollPane consuming keys that are not directly targetted at it

Changes: https://git.openjdk.org/jfx/pull/1582/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1582&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8340852
  Stats: 15 lines in 1 file changed: 6 ins; 0 del; 9 mod
  Patch: https://git.openjdk.org/jfx/pull/1582.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1582/head:pull/1582

PR: https://git.openjdk.org/jfx/pull/1582

Reply via email to