From ac6b53b3ec8e3f2fd9f5b5ed0c48e8d2722a415d Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sat, 10 Dec 2022 14:41:56 +0800 Subject: [PATCH] TextEditorEX // Remove (buggy) tooltip binding support. - This binding causes responsiveness issues towards the editor. --- .../Sources/PhraseEditorUI/PhraseEditorUI.swift | 2 +- .../SwiftExtension/SwiftUIExtension.swift | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Packages/vChewing_PhraseEditorUI/Sources/PhraseEditorUI/PhraseEditorUI.swift b/Packages/vChewing_PhraseEditorUI/Sources/PhraseEditorUI/PhraseEditorUI.swift index 49869c5f7..0b8c80cf1 100644 --- a/Packages/vChewing_PhraseEditorUI/Sources/PhraseEditorUI/PhraseEditorUI.swift +++ b/Packages/vChewing_PhraseEditorUI/Sources/PhraseEditorUI/PhraseEditorUI.swift @@ -248,7 +248,7 @@ public struct VwrPhraseEditorUI: View { } } - TextEditorEX(text: $txtContent, tooltip: $textEditorTooltip) + TextEditorEX(text: $txtContent) .disabled(selInputMode == .imeModeNULL || isLoading) .frame(minWidth: 320, minHeight: 240) .backport.onChange(of: fileChangeIndicator.id) { _ in diff --git a/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftUIExtension.swift b/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftUIExtension.swift index 440ac2471..7c1d8cf33 100644 --- a/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftUIExtension.swift +++ b/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftUIExtension.swift @@ -89,11 +89,9 @@ public struct VisualEffectView: NSViewRepresentable { /// A much faster alternative than Apple official TextEditor. public struct TextEditorEX: NSViewRepresentable { @Binding var text: String - @Binding var tooltip: String - public init(text: Binding, tooltip: Binding) { + public init(text: Binding) { _text = text - _tooltip = tooltip } public func makeNSView(context: Context) -> NSScrollView { @@ -101,23 +99,20 @@ public struct TextEditorEX: NSViewRepresentable { } public func updateNSView(_ nsView: NSScrollView, context _: Context) { - if let textArea = nsView.documentView as? NSTextView { - if textArea.string != text { textArea.string = text } - if textArea.toolTip != tooltip { textArea.toolTip = tooltip } + if let textArea = nsView.documentView as? NSTextView, textArea.string != self.text { + textArea.string = text } } public func makeCoordinator() -> Coordinator { - Coordinator(text: $text, tooltip: $tooltip) + Coordinator(text: $text) } public class Coordinator: NSObject, NSTextViewDelegate { public var text: Binding - public var tooltip: Binding - public init(text: Binding, tooltip: Binding) { + public init(text: Binding) { self.text = text - self.tooltip = tooltip } public func textView(_ textView: NSTextView, shouldChangeTextIn range: NSRange, replacementString text: String?) @@ -125,7 +120,6 @@ public struct TextEditorEX: NSViewRepresentable { { defer { self.text.wrappedValue = (textView.string as NSString).replacingCharacters(in: range, with: text!) - self.tooltip.wrappedValue = (textView.toolTip as? NSString ?? "").replacingCharacters(in: range, with: text!) } return true }