RFR: 8374035: RichTextArea: add insertStyles property [v2]
Andy Goryachev
angorya at openjdk.org
Tue Jan 6 17:08:33 UTC 2026
> # Use Case
>
> typing into RichTextArea with a default model (or any other model that supports discrete styles), in the presence of a tool bar or similar UI that allows to specify the styles to take effect on the next key press. Example:
> - open MS Word or another rich text editor such as TextEdit
> - type something
> - place cursor at the middle of the typed text and hit command-B or ctrl-B on Win/Linux
> - notice how the formatting toolbar highlights [b] button indicating that the style for next character to be inserted has changed to bold
> - type something and confirm that inserted text is bold
> the new style is captured only in the toolbar UI, so clicking on some other part of the text reverts the bold button to the unselected state.
>
>
> # Problem
>
> typing a character uses the model's logic to deal with the styles, via StyledTextModel::replace(StyleResolver resolver, TextPos start, TextPos end, String text) method, see RichTextAreaBehavior::handleTypedChar(). This worked well initially, however it makes it impossible (without extending RichTextAreaBehavior which is not a public class) to implement the behavior described earlier.
>
>
> # Solution
>
> - add 'insertStyles<StyleAttributeMap>' property to the RichTextArea, which will override the model styles in RichTextAreaBehavior::handleTypedChar() if the value is not null
Andy Goryachev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
- 2026
- Merge branch 'master' into 8374035.insert.styles
- test
- 26
- Merge branch 'master' into 8374035.insert.styles
- Merge branch 'master' into 8374035.insert.styles
- insert styles
-------------
Changes:
- all: https://git.openjdk.org/jfx/pull/2017/files
- new: https://git.openjdk.org/jfx/pull/2017/files/1bd80393..67066b6e
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jfx&pr=2017&range=01
- incr: https://webrevs.openjdk.org/?repo=jfx&pr=2017&range=00-01
Stats: 278 lines in 15 files changed: 119 ins; 60 del; 99 mod
Patch: https://git.openjdk.org/jfx/pull/2017.diff
Fetch: git fetch https://git.openjdk.org/jfx.git pull/2017/head:pull/2017
PR: https://git.openjdk.org/jfx/pull/2017
More information about the openjfx-dev
mailing list