--- old/modules/graphics/src/main/java/com/sun/javafx/scene/KeyboardShortcutsHandler.java 2014-01-28 15:50:01.939628845 +0100 +++ new/modules/graphics/src/main/java/com/sun/javafx/scene/KeyboardShortcutsHandler.java 2014-01-28 15:50:01.787628840 +0100 @@ -98,8 +98,10 @@ return accelerators; } - public void traverse(Node node, Direction dir) { - node.impl_traverse(dir); + private void traverse(Event event, Node node, Direction dir) { + if (node.impl_traverse(dir)) { + event.consume(); + } } public void processTraversal(Event event) { @@ -111,28 +113,23 @@ switch (((KeyEvent)event).getCode()) { case TAB : if (((KeyEvent)event).isShiftDown()) { - traverse(((Node)obj), com.sun.javafx.scene.traversal.Direction.PREVIOUS); + traverse(event, ((Node)obj), com.sun.javafx.scene.traversal.Direction.PREVIOUS); } else { - traverse(((Node)obj), com.sun.javafx.scene.traversal.Direction.NEXT); + traverse(event, ((Node)obj), com.sun.javafx.scene.traversal.Direction.NEXT); } - event.consume(); break; case UP : - traverse(((Node)obj), com.sun.javafx.scene.traversal.Direction.UP); - event.consume(); + traverse(event, ((Node)obj), com.sun.javafx.scene.traversal.Direction.UP); break; case DOWN : - traverse(((Node)obj), com.sun.javafx.scene.traversal.Direction.DOWN); - event.consume(); + traverse(event, ((Node)obj), com.sun.javafx.scene.traversal.Direction.DOWN); break; case LEFT : - traverse(((Node)obj), com.sun.javafx.scene.traversal.Direction.LEFT); - event.consume(); + traverse(event, ((Node)obj), com.sun.javafx.scene.traversal.Direction.LEFT); break; case RIGHT : - traverse(((Node)obj), com.sun.javafx.scene.traversal.Direction.RIGHT); - event.consume(); + traverse(event, ((Node)obj), com.sun.javafx.scene.traversal.Direction.RIGHT); break; default : break;