From 2b0c29e74ccb51ae627dfcc56346104ffe5aa4f3 Mon Sep 17 00:00:00 2001 From: Khan Winter <35942988+thecoolwinter@users.noreply.github.com> Date: Sun, 10 Nov 2024 15:02:56 -0600 Subject: [PATCH] Scroll Cursor Visible While Typing (#55) --- .../TextView/TextView+ReplaceCharacters.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift index 4578744a..06949b21 100644 --- a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift +++ b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift @@ -42,6 +42,12 @@ extension TextView { layoutManager.endTransaction() selectionManager.notifyAfterEdit() NotificationCenter.default.post(name: Self.textDidChangeNotification, object: self) + + // `scrollSelectionToVisible` is a little expensive to call every time. Instead we just check if the first + // selection is entirely visible. `.contains` checks that all points in the rect are inside. + if let selection = selectionManager.textSelections.first, !visibleRect.contains(selection.boundingRect) { + scrollSelectionToVisible() + } } /// Replace the characters in a range with a new string.