From ea0e8261dd66e541b911c15cd9f4baf3cfeccd51 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Fri, 19 Jul 2024 16:25:03 -0500 Subject: [PATCH 1/2] Option to Use the System Cursor --- CodeEdit/Features/Editor/Views/CodeFileView.swift | 3 +++ .../TextEditingSettings/Models/TextEditingSettings.swift | 4 ++++ .../TextEditingSettings/TextEditingSettingsView.swift | 9 +++++++++ 3 files changed, 16 insertions(+) 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..3687e519bb 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,7 @@ extension SettingsData { BracketPairHighlight.self, forKey: .bracketHighlight ) ?? BracketPairHighlight() + self.useSystemCursor = try container.decodeIfPresent(Bool.self, forKey: .useSystemCursor) ?? true 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", From 102d5036fcdbcb9309a9094ad6b0b3de422b56d3 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Fri, 19 Jul 2024 16:29:53 -0500 Subject: [PATCH 2/2] Only decode on valid macos version --- .../TextEditingSettings/Models/TextEditingSettings.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CodeEdit/Features/Settings/Pages/TextEditingSettings/Models/TextEditingSettings.swift b/CodeEdit/Features/Settings/Pages/TextEditingSettings/Models/TextEditingSettings.swift index 3687e519bb..bf74a14917 100644 --- a/CodeEdit/Features/Settings/Pages/TextEditingSettings/Models/TextEditingSettings.swift +++ b/CodeEdit/Features/Settings/Pages/TextEditingSettings/Models/TextEditingSettings.swift @@ -100,7 +100,11 @@ extension SettingsData { BracketPairHighlight.self, forKey: .bracketHighlight ) ?? BracketPairHighlight() - self.useSystemCursor = try container.decodeIfPresent(Bool.self, forKey: .useSystemCursor) ?? true + if #available(macOS 14, *) { + self.useSystemCursor = try container.decodeIfPresent(Bool.self, forKey: .useSystemCursor) ?? true + } else { + self.useSystemCursor = false + } self.populateCommands() }