# HG changeset patch # Parent 6159a745dce80ec221ed1485eadc126c2f4ea961 RT-18223: if ScrollBar is focusTraversable, requestFocus on certain mouse press events (like a mouse press on increment button). diff -r 6159a745dce8 -r 08e464746427 modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/ScrollBarBehavior.java --- a/modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/ScrollBarBehavior.java Thu Jan 16 12:02:33 2014 -0500 +++ b/modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/ScrollBarBehavior.java Thu Jan 16 13:16:52 2014 -0500 @@ -176,9 +176,8 @@ // determine the percentage of the way between min and max // represented by this mouse event final ScrollBar bar = getControl(); - // If not already focused, request focus + if (!bar.isFocused() && bar.isFocusTraversable()) bar.requestFocus(); final double pos = position; - if (!bar.isFocused()) bar.requestFocus(); final boolean incrementing = (pos > ((bar.getValue() - bar.getMin())/(bar.getMax() - bar.getMin()))); timeline = new Timeline(); timeline.setCycleCount(Timeline.INDEFINITE); @@ -224,6 +223,7 @@ */ public void decButtonPressed(MouseEvent e) { final ScrollBar bar = getControl(); + if (!bar.isFocused() && bar.isFocusTraversable()) bar.requestFocus(); if (timeline != null) { com.sun.javafx.Logging.getJavaFXLogger().warning("timeline is not null"); timeline.stop(); @@ -268,6 +268,7 @@ */ public void incButtonPressed(MouseEvent e) { final ScrollBar bar = getControl(); + if (!bar.isFocused() && bar.isFocusTraversable()) bar.requestFocus(); if (timeline != null) { com.sun.javafx.Logging.getJavaFXLogger().warning("timeline is not null"); timeline.stop(); @@ -317,6 +318,7 @@ */ public void thumbDragged(MouseEvent e, double position) { final ScrollBar scrollbar = getControl(); + if (!scrollbar.isFocused() && scrollbar.isFocusTraversable()) scrollbar.requestFocus(); double newValue = (position * (scrollbar.getMax() - scrollbar.getMin())) + scrollbar.getMin(); if (!Double.isNaN(newValue)) { scrollbar.setValue(Utils.clamp(scrollbar.getMin(), newValue, scrollbar.getMax()));