On Thu, 30 Oct 2025 23:10:14 GMT, Andy Goryachev <[email protected]> wrote:

>> Original user feedback (see 
>> https://mail.openjdk.org/pipermail/openjfx-discuss/2025-August/000267.html ) 
>> called for adding an `allowUndo` parameter to `applyStyle()` and 
>> `setStyle()` methods similarly to `replaceText()`.
>> 
>> Upon further analysis, the `allowUndo` parameter was a mistake: allowing the 
>> application code to disable creating undo/redo entries messes up the 
>> internal undo/redo stack.
>> There is an internal need (`UndoableChange`), but it should not be exposed 
>> via public API.
>> 
>> This PR also adds `isUndoRedoEnabled()` and `setUndoRedoEnabled()` to the 
>> `StyledTextModel`, as well as its forwarding aliases to `RichTextArea` to 
>> allow for the application to disable undo/redo temporarily, for example, 
>> when building a document from multiple segments.
>> 
>> WARNING this is an incompatible change, permitted because of the incubator.
>> 
>> There remains a possible issue with currently unlimited size of the 
>> undo/redo stack - perhaps we should limit its depth to maybe 100-200 
>> entries, see https://bugs.openjdk.org/browse/JDK-8370447 .
>
> Andy Goryachev has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   undo/redo javadoc in model only

You missed removing one of the mentions of undo in `CodeArea::setText`, but 
otherwise looks good.

There is a merge conflict in the test that you will need to resolve.

modules/jfx.incubator.richtext/src/main/java/jfx/incubator/scene/control/richtext/CodeArea.java
 line 446:

> 444:     public final void setText(String text) {
> 445:         TextPos end = getDocumentEnd();
> 446:         getModel().replace(null, TextPos.ZERO, end, text);

The javadoc description for this method still says "an undo event gets created".

-------------

PR Review: https://git.openjdk.org/jfx/pull/1941#pullrequestreview-3405856713
PR Review Comment: https://git.openjdk.org/jfx/pull/1941#discussion_r2482477381

Reply via email to