On Wed, 22 Oct 2025 13:38:45 GMT, Kevin Rushforth <[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 .
>
> I agree that having this as a per-method argument doesn't make sense.
> 
> I think it's worth considering a future enhancement to add a property to 
> enable or disable the undo feature, with a default of `true`. When set to 
> `true`, it stores entries in the undo stack and enables undo/redo. When set 
> to `false`, it discards the current stack and doesn't store anything or allow 
> undo/redo until the next time it is set to true.

Thank you @kevinrushforth for suggesting the `enableUndo` (`enableUndoRedo` ?) 
property.

Consider a scenario of building a (large) document programmatically: in the 
absence of such a property, the undo entries will be created, consuming the 
resources, to be immediately discarded by `clearUnoRedo()` at the end, as 
suggested earlier.  A better solution is to indeed explicitly disable the 
undo/redo via a new property.  This is especially helpful when we consider that 
currently the undo/redo stack has no limit - see also 
https://bugs.openjdk.org/browse/JDK-8370447 .

Converting this PR back to Draft to add the property, since the code is 
interdependent and we'll need a CSR anyway.

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

PR Comment: https://git.openjdk.org/jfx/pull/1941#issuecomment-3433482155

Reply via email to