On Wed, 9 Jul 2025 21:08:00 GMT, Andy Goryachev <ango...@openjdk.org> wrote:
>> # Tab Stop Policy >> >> Andy Goryachev >> >> <andy.goryac...@oracle.com> >> >> >> ## Summary >> >> Introduce a `tabStopPolicy` property in the `TextFlow` class which, when >> set, overrides the existing `tabSize` >> value and provides consistent way of setting tab stops at the paragraph >> level, regardless of the individual text >> segments font [0]. >> >>  >> >> >> ## Goals >> >> The goal of this proposal is to provide a better way for controlling tab >> stops in the `TextFlow` containing rich text. >> >> >> >> ## Non-Goals >> >> The following are not the goals of this proposal: >> >> - support for tab stop types (BAR, or DECIMAL), or attributes like >> `alignment` >> - support the `leader` property (symbols to fill the empty space before the >> tab stop) >> - support for `firstLineIndent` property >> - deprecate the `TextFlow::tabsize` property >> >> >> >> ## Motivation >> >> The existing `tabSize` property in the `TextFlow` is inadequate for >> representing tab stops when the content >> contains text with different font sizes. >> >> In addition to that, a rich text editor might require support for >> user-customizable tab stops, similar to that provided >> in RTF or MS Word documents. >> >> >> >> >> ## Description >> >> ### TextFlow >> >> >> /** >> * {@code TabAdvancePolicy} determines the tab stop positions within >> this {@code TextFlow}. >> * <p> >> * A non-null {@code TabAdvancePolicy} overrides values set by {@link >> #setTabSize(int)}, >> * as well as any values set by {@link Text#setTabSize(int)} in >> individual {@code Text} instances within >> * this {@code TextFlow}. >> * >> * @defaultValue null >> * >> * @since 999 TODO >> */ >> public final ObjectProperty<TabStopPolicy> tabStopPolicyProperty() { >> >> public final TabStopPolicy getTabStopPolicy() { >> >> public final void setTabStopPolicy(TabStopPolicy policy) { >> >> /** >> * The size of a tab stop in spaces. >> * Values less than 1 are treated as 1. This value overrides the >> * {@code tabSize} of contained {@link Text} nodes. >> * <p> >> + * Note that this method should not be used to control the tab >> placement when multiple {@code Text} nodes >> + * with different fonts are contained within this {@code TextFlow}. >> + * In this case, the {@link #setTabStopPolicy(TabStopPolicy)} should be >> used instead. >> * >> * @defaultValue 8 >> *... > > Andy Goryachev has updated the pull request incrementally with one additional > commit since the last revision: > > oops API / docs looks good with one formatting issue that I noticed when looking at the generated API docs. I'll review the CSR next. modules/javafx.graphics/src/main/java/javafx/scene/text/TabStopPolicy.java line 60: > 58: /** > 59: * Specifies the default tab stop interval for tabs beyond the last > stop provided > 60: * by {@code #tabStops()}. This is a fixed repeating distance (in > pixels) to the Change this to a `@link` or remove the `#` and `()` since they show up in the docs. ------------- PR Review: https://git.openjdk.org/jfx/pull/1744#pullrequestreview-3003151060 PR Review Comment: https://git.openjdk.org/jfx/pull/1744#discussion_r2196012493