JDK-8118192 : Node Orientation - ScrollPane does not scroll properly either vertially or horizonatally (goes blank)
  • Type: Bug
  • Component: javafx
  • Sub-Component: scenegraph
  • Affected Version: 8
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2012-11-08
  • Updated: 2015-06-17
  • Resolved: 2013-02-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8
8Fixed
Related Reports
Blocks :  
Blocks :  
Relates :  
Relates :  
Description
Run both the attachments.  Both have the same sorts of redraw blank area bugs.  ScrollPaneUsingOrientation uses orientation and ScrollPaneUsingTransformAPI uses public tranform API.  This indicates a bug in graphics rather than a bug in Component Orientation but I can't be sure.
Comments
Verified on 8.0b104
27-08-2013

Used modified HelloScrollPane for testing ( + key scales one scrollpane up).
21-02-2013

Actually this seems to be related to the scrolling optimization done in Quantum. When this optimization is switched off, the RT26132.java and ScrollPaneUsingTransformAPI.java work correctly and without any patch. The ScrollPaneUsingOrientation.java doesn't show anything on my WindowXP (might be related to the RTL window style). If I move the RTL style from Scene to the root group, also that example works with the scrolling optimization switched off. It should be investigated why the scrolling optimization doesn't work with mirroring transformations.
08-01-2013

Hi Leif, my comments to your patch: 1. The node's localToParentTx is set to identity earlier in the method. Nobody does that for the clip, so I guess you are flipping it back and forth all the time. 2. I think you need to take care of adding a clip (mirror it if necessary) and removing a clip (remove the mirroring not to leave user with a modified node) 3. Luckily, sharing clips is not allowed so you are fine here. I think it would be better to do it the other way around: see if this node is somebody's clip, and if yes, adjust the transformation according to the clip owner. Then you'll need to see to the clip's transform being marked dirty when its owner node's orientation changes and when it is added/removed from being a clip. Does that make sense?
19-12-2012

Assigning to SceneGraph for evaluation.
18-12-2012

Attaching test case RT26132.java, which is modified from the case in RT-24228. It shows two ScrollPanes, one with LTR and one with RTL orientation. A CheckBox is used to set or remove the clip Rectangle used in ScrollPaneSkin. Note how the RTL content scrolls sideways in the wrong direction before disappearing. When the clip is removed, the scrolling works correctly. If my experimental patch is applied, then this works much better. I just need someone to review it and maybe suggest a more robust fix.
27-11-2012

The attached rt26132-experimental.patch seems to make the test case in RT-24228 work properly. I don't understand it very well myself, but it doesn't seem correct from a general point of view. Suggestions would be most welcome.
26-11-2012

It seems that the clip Node needs to be mirrored to match the Node it is applied to. Care needs to be taken for cases where a clip Node is reused between multiple nodes (is that legal?) and for situations when the clip either changes shape or is replaced.
21-11-2012