SessionCtl // Use selectionRange() and replacementRange().

This commit is contained in:
ShikiSuen 2023-05-29 20:46:25 +08:00
parent 4888a0dc54
commit fc29b52f8f
1 changed files with 11 additions and 16 deletions

View File

@ -104,7 +104,6 @@ public extension SessionCtl {
/// / /// /
func setInlineDisplayWithCursor() { func setInlineDisplayWithCursor() {
var attrStr: NSAttributedString = attributedStringSecured.value var attrStr: NSAttributedString = attributedStringSecured.value
var theRange: NSRange = attributedStringSecured.range
// QQNT client.setMarkedText() .thick // QQNT client.setMarkedText() .thick
mitigation: if clientMitigationLevel == 1, state.type == .ofMarking { mitigation: if clientMitigationLevel == 1, state.type == .ofMarking {
if !PrefMgr.shared.disableSegmentedThickUnderlineInMarkingModeForManagedClients { break mitigation } if !PrefMgr.shared.disableSegmentedThickUnderlineInMarkingModeForManagedClients { break mitigation }
@ -116,19 +115,16 @@ public extension SessionCtl {
?? [.underlineStyle: NSUnderlineStyle.thick.rawValue], range: rangeNeo ?? [.underlineStyle: NSUnderlineStyle.thick.rawValue], range: rangeNeo
) )
attrStr = neo attrStr = neo
theRange = NSRange.zero
} }
/// selectionRange /// selectionRange
/// 0 replacementRangeNSNotFound /// 0 replacementRangeNSNotFound
/// ///
doSetMarkedText(attrStr, selectionRange: theRange) doSetMarkedText(attrStr)
} }
/// 使 /// 使
func clearInlineDisplay() { func clearInlineDisplay() {
doSetMarkedText( doSetMarkedText(NSAttributedString())
NSAttributedString(), selectionRange: NSRange.zero
)
} }
/// ///
@ -140,13 +136,13 @@ public extension SessionCtl {
DispatchQueue.main.async { DispatchQueue.main.async {
guard let client = self.client() else { return } guard let client = self.client() else { return }
client.insertText( client.insertText(
buffer, replacementRange: NSRange.notFound buffer, replacementRange: self.replacementRange()
) )
} }
} else { } else {
guard let client = client() else { return } guard let client = client() else { return }
client.insertText( client.insertText(
buffer, replacementRange: NSRange.notFound buffer, replacementRange: replacementRange()
) )
} }
} }
@ -154,22 +150,21 @@ public extension SessionCtl {
/// setMarkedText GCD /// setMarkedText GCD
/// - Parameters: /// - Parameters:
/// - string: NSAttributedString /// - string: NSAttributedString
/// - selectionRange: .thick
/// - replacementRange:
/// replacementRange Microsoft Office /// replacementRange Microsoft Office
/// / /// /
func doSetMarkedText( func doSetMarkedText(_ string: NSAttributedString) {
_ string: NSAttributedString, selectionRange: NSRange,
replacementRange: NSRange = .notFound
) {
if isServingIMEItself || !isActivated { if isServingIMEItself || !isActivated {
DispatchQueue.main.async { DispatchQueue.main.async {
guard let client = self.client() else { return } guard let client = self.client() else { return }
client.setMarkedText(string, selectionRange: selectionRange, replacementRange: replacementRange) client.setMarkedText(
string, selectionRange: self.selectionRange(), replacementRange: self.replacementRange()
)
} }
} else { } else {
guard let client = client() else { return } guard let client = client() else { return }
client.setMarkedText(string, selectionRange: selectionRange, replacementRange: replacementRange) client.setMarkedText(
string, selectionRange: selectionRange(), replacementRange: replacementRange()
)
} }
} }
} }