-
Bug
-
Resolution: Fixed
-
P4
-
8
See test case RT34774.java in issue RT-34774. Left/right traversal works in RTL for most controls, but are reversed for MenuButton. This probably affects a few other controls also, such as TreeView, Accordion, and TabPane.
The behaviors for these controls use the actions TraverseLeft and TraverseRight with modified semantics. MenuButton, for example, will in LTR mode with a TraverseLeft action open the menu if the Side is set to LEFT, otherwise it will hand it over to the TraversalEngine. In Accordion, TraverseLeft can mean "traverse up".
A part of the problem is that BehaviorBase switches the action names TraverseLeft and TraverseRight before the subclass will see it. This causes confusion for MenuButtonBehaviorBase, which may pass on the wrong visual direction to the TraversalEngine. I think that BehaviorBase should not switch the actions, and that each subclass should handle RTL explicitly instead.
The behaviors for these controls use the actions TraverseLeft and TraverseRight with modified semantics. MenuButton, for example, will in LTR mode with a TraverseLeft action open the menu if the Side is set to LEFT, otherwise it will hand it over to the TraversalEngine. In Accordion, TraverseLeft can mean "traverse up".
A part of the problem is that BehaviorBase switches the action names TraverseLeft and TraverseRight before the subclass will see it. This causes confusion for MenuButtonBehaviorBase, which may pass on the wrong visual direction to the TraversalEngine. I think that BehaviorBase should not switch the actions, and that each subclass should handle RTL explicitly instead.
- relates to
-
JDK-8089134 [2D traversal, RTL] TraversalEngine only handles left/right key traversal correctly in RTL for top-level engine in ToolBar
- Resolved
-
JDK-8122932 [RTL] Arrow keys navigation doesn't respect TableView orientation
- Resolved