FXMisc / Flowless

Efficient VirtualFlow for JavaFX
BSD 2-Clause "Simplified" License
185 stars 38 forks source link

Custom Editor, Multiple Custom Objects, adding HyperlinkSegment and ImageSegment #70

Closed gandalfas closed 4 years ago

gandalfas commented 5 years ago

Expected Behavior

When I added hyperlinks and images to Jugen's StyledSegmentTextArea, I was hoping the hyperlinks would work.

Actual Behavior

The first and third hyperlinks in the demo behave correctly, but the second hyperlink in the demo is somehow corrupted:

This Issue began life elsewhere

I first reported this issue here: https://github.com/FXMisc/RichTextFX/issues/807?_pjax=%23js-repo-pjax-container

In there, Jugen said:

So it turns out that the culprit for this behavior is the image, in particular the vertical size of the image.

When the image is very tall, specifically it seems when the image is taller than the view-port, AND the hyperlink is in the same paragraph as the image then the mouse over somehow causes a re-layout to occur which is what you are seeing.

If you replace the image with one that is smaller vertically or put the hyperlink in a different paragraph then the re-layout doesn't occur anymore and the hyperlink behaves as expected.

The origins of this misbehavior is I think inside VirtualFlow in Flowless ?

Reproducible Demo

The source files are here: https://github.com/Kim4444/RichTextFXIssue

Demo Notes: First I downloaded the files at https://github.com/Jugen/StyledSegmentTextArea. I tweaked the source slightly, then added HyperlinkSegment and ImageSegment. I also use ReadOnlyStyledDocumentBuilder so I could build the doc one paragraph at a time. I tried to make as few changes to Jugen's demo as I could. There are more details in the demo file CodeChanges.txt. I am uncertain if it is a bug in my code, or in RichTextFX/supporting classes. Thank you so much for any help!

Environment info:

RichTextFX Version: 0.9.3 Flowless 0.6.1 ReactFX 2.0-M5 UndoFX 2.1.0 WellBehavedFX 0.3.3 Operating System: Windows 10 Java version: 8u181