Skip to content

馃悶 Programmatic cursor state updates are never applied#377

Description

@gerardp

Description

Programmatic updates to SourceEditorState.cursorPositions are never applied to the underlying TextViewController.

In SourceEditor.updateControllerWithState(_:controller:), the new cursor positions are compared with the same state value:

if let cursorPositions = state.cursorPositions, cursorPositions != state.cursorPositions {
    controller.setCursorPositions(cursorPositions)
}

Because cursorPositions was just unwrapped from state.cursorPositions, the comparison is always false.

To Reproduce

  1. Create a SourceEditor with a binding to SourceEditorState.
  2. After the editor appears, programmatically assign a different value to state.cursorPositions.
  3. Observe that the editor cursor does not move to the requested position.

Expected Behavior

Changing SourceEditorState.cursorPositions should update the cursor positions in the underlying controller.

The comparison likely needs to use the controller's current state:

if let cursorPositions = state.cursorPositions,
   cursorPositions != controller.cursorPositions {
    controller.setCursorPositions(cursorPositions)
}

Version Information

CodeEditSourceEditor: main, revision 1fa4d3c
macOS: 15.7.9
Xcode: 26.3 (17C529)

Additional Context

No matching open or closed issue was found before filing this report.

Screenshots

Not applicable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions