diff --git a/CodeEdit/Features/Editor/Views/CodeFileView.swift b/CodeEdit/Features/Editor/Views/CodeFileView.swift index 3f3003d586..f485f277ee 100644 --- a/CodeEdit/Features/Editor/Views/CodeFileView.swift +++ b/CodeEdit/Features/Editor/Views/CodeFileView.swift @@ -40,6 +40,8 @@ struct CodeFileView: View { var letterSpacing @AppSettings(\.textEditing.bracketHighlight) var bracketHighlight + @AppSettings(\.textEditing.useSystemCursor) + var useSystemCursor @Environment(\.colorScheme) private var colorScheme @@ -121,6 +123,7 @@ struct CodeFileView: View { isEditable: isEditable, letterSpacing: letterSpacing, bracketPairHighlight: bracketPairHighlight, + useSystemCursor: useSystemCursor, undoManager: undoManager, coordinators: textViewCoordinators ) diff --git a/CodeEdit/Features/Settings/Pages/TextEditingSettings/Models/TextEditingSettings.swift b/CodeEdit/Features/Settings/Pages/TextEditingSettings/Models/TextEditingSettings.swift index 2378099c8f..bf74a14917 100644 --- a/CodeEdit/Features/Settings/Pages/TextEditingSettings/Models/TextEditingSettings.swift +++ b/CodeEdit/Features/Settings/Pages/TextEditingSettings/Models/TextEditingSettings.swift @@ -59,6 +59,9 @@ extension SettingsData { /// The behavior of bracket pair highlights. var bracketHighlight: BracketPairHighlight = BracketPairHighlight() + /// Use the system cursor for the source editor. + var useSystemCursor: Bool = true + /// Default initializer init() { self.populateCommands() @@ -97,6 +100,11 @@ extension SettingsData { BracketPairHighlight.self, forKey: .bracketHighlight ) ?? BracketPairHighlight() + if #available(macOS 14, *) { + self.useSystemCursor = try container.decodeIfPresent(Bool.self, forKey: .useSystemCursor) ?? true + } else { + self.useSystemCursor = false + } self.populateCommands() } diff --git a/CodeEdit/Features/Settings/Pages/TextEditingSettings/TextEditingSettingsView.swift b/CodeEdit/Features/Settings/Pages/TextEditingSettings/TextEditingSettingsView.swift index 235b025ea4..d6f641a8ab 100644 --- a/CodeEdit/Features/Settings/Pages/TextEditingSettings/TextEditingSettingsView.swift +++ b/CodeEdit/Features/Settings/Pages/TextEditingSettings/TextEditingSettingsView.swift @@ -18,6 +18,7 @@ struct TextEditingSettingsView: View { indentOption defaultTabWidth wrapLinesToEditorWidth + useSystemCursor } Section { fontSelector @@ -71,6 +72,14 @@ private extension TextEditingSettingsView { Toggle("Wrap lines to editor width", isOn: $textEditing.wrapLinesToEditorWidth) } + @ViewBuilder private var useSystemCursor: some View { + if #available(macOS 14, *) { + Toggle("Use System Cursor", isOn: $textEditing.useSystemCursor) + } else { + EmptyView() + } + } + @ViewBuilder private var lineHeight: some View { Stepper( "Line Height",