On Wed, 9 Jul 2025 20:27:07 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 with a new target base due to a > merge or a rebase. The pull request now contains 62 commits: > > - since 25 > - review comments > - Merge remote-tracking branch 'origin/master' into 8314482.tab.stops > - Merge remote-tracking branch 'origin/master' into 8314482.tab.stops > - final tab stop > - review comments > - Merge remote-tracking branch 'origin/master' into 8314482.tab.stops > - cleanup > - api > - Merge remote-tracking branch 'origin/master' into 8314482.tab.stops > - ... and 52 more: https://git.openjdk.org/jfx/compare/639a5950...00bcf4b0 modules/javafx.graphics/src/main/java/javafx/scene/text/TabStopPolicy.java line 68: > 66: * @defaultValue 0 > 67: */ > 68: public final DoubleProperty defaultInterval() { Oops. This should be `defaultIntervalProperty()`, which explains the GHA build failure. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1744#discussion_r2195944153