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