> 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.
John Hendrikx has updated the pull request incrementally with one additional commit since the last revision: Add information about how ScrollPane acts on key presses. ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1582/files - new: https://git.openjdk.org/jfx/pull/1582/files/de3c94cc..38d29e20 Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1582&range=02 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1582&range=01-02 Stats: 6 lines in 1 file changed: 4 ins; 0 del; 2 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