You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When performing an undo or redo, the cursor and scroll position should return to the state they were in at the time of the change. Currently, only the text content is restored, but the selection and scroll position are not preserved, which can disrupt the editing experience—especially during rapid or successive edits.
Expected Behavior
When a change is undone, the insertion point and scroll position should move to where they were when the change originally occurred.
When a change is redone, the insertion point and scroll position should likewise be restored to their prior state.
This behavior should feel seamless and natural, mirroring the expectations of professional editors on macOS.
Proposed Implementation
Extend the existing Mutation or UndoGroup struct to include the selected range and visible scroll rect at the time of the change.
Capture these properties during registerMutation(_:).
Restore the stored selected range and scroll rect in undo() and redo() methods after applying the text mutations.
Benefits
Improves consistency and usability of the editor during undo/redo workflows.
Reduces disorientation from insertion point jumps or loss of context.
Brings CodeEditTextView in line with native Mac editor expectations.
Additional Notes
Consider edge cases such as when the associated text range no longer exists.
The text was updated successfully, but these errors were encountered:
Description
When performing an undo or redo, the cursor and scroll position should return to the state they were in at the time of the change. Currently, only the text content is restored, but the selection and scroll position are not preserved, which can disrupt the editing experience—especially during rapid or successive edits.
Expected Behavior
Proposed Implementation
Mutation
orUndoGroup
struct to include the selected range and visible scroll rect at the time of the change.registerMutation(_:)
.undo()
andredo()
methods after applying the text mutations.Benefits
Additional Notes
The text was updated successfully, but these errors were encountered: