On Wed, 26 Mar 2025 14:41:51 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 > * > * @since 14 > */ > public final IntegerProperty tabSizeProperty() { > > > > ### TabStopPolicy > > > /** > * The TabStopPolicy determines the tab stop pos... This pull request has now been integrated. Changeset: 22e43c58 Author: Andy Goryachev <ango...@openjdk.org> URL: https://git.openjdk.org/jfx/commit/22e43c58af8ca293052b54d86c78818fc32f09d9 Stats: 701 lines in 13 files changed: 671 ins; 5 del; 25 mod 8314482: TextFlow: TabStopPolicy Reviewed-by: kcr, arapte ------------- PR: https://git.openjdk.org/jfx/pull/1744