On Tue, 8 Oct 2024 16:07:54 GMT, Andy Goryachev <ango...@openjdk.org> wrote:
> Please refer to > > https://github.com/andy-goryachev-oracle/Test/blob/main/doc/Text/LayoutInfo.md > > The RichTextArea control > ([JDK-8301121](https://bugs.openjdk.org/browse/JDK-8301121)), or any custom > control that needs non-trivial navigation within complex or wrapped text > needs a public API to get information about text layout. > > This change fixes the missing functionality by adding a new public method to > the `Text` and `TextFlow` classes.: > > > /** > * Obtains the snapshot of the current text layout information. > * @return the layout information > * @since 25 > */ > public final LayoutInfo getLayoutInfo() > > > The `LayoutInfo` provides a view into the text layout within > `Text`/`TextFlow` nodes such as: > > - caret information > - text lines: offsets and bounds > - overall layout bounds > - text selection geometry > - strike-through geometry > - underline geometry > > > > > ## WARNINGS > > Presently, information obtained via certain Text/TextField methods is > incorrect with non-zero padding and borders, see > [JDK-8341438](https://bugs.openjdk.org/browse/JDK-8341438). > > This PR provides correct answers in the new API, leaving the behavior of the > existing methods unchanged (there is a compatibility risk associated with > trying to fix [JDK-8341438](https://bugs.openjdk.org/browse/JDK-8341438) ). > > Also, the RTL support is out of scope for this PR, due to multiple > pre-existing conditions, see https://bugs.openjdk.org/browse/JDK-8343557 > > > ## Testing > > The new APIs can be visually tested using the Monkey Tester on this branch: > https://github.com/andy-goryachev-oracle/MonkeyTest/tree/text.layout.api > > in the Text and TextFlow pages: >  > > Two very basic headful tests have been added. > > > ## See Also > > https://github.com/FXMisc/RichTextFX/pull/1246 This pull request has now been integrated. Changeset: 1ea980ea Author: Andy Goryachev <ango...@openjdk.org> URL: https://git.openjdk.org/jfx/commit/1ea980ea6104ce39994fee0fcbaa460888a2747e Stats: 1574 lines in 13 files changed: 1478 ins; 52 del; 44 mod 8341670: [Text,TextFlow] Public API for Text Layout Info Reviewed-by: kcr, mstrauss ------------- PR: https://git.openjdk.org/jfx/pull/1596