InputHandler // Fix markers for .ofCandidates().

This commit is contained in:
ShikiSuen 2023-06-28 09:30:05 +08:00
parent 3c8fe42f9f
commit a7e3013a1f
2 changed files with 20 additions and 5 deletions

View File

@ -428,10 +428,18 @@ public class InputHandler: InputHandlerProtocol {
preConsolidate: PrefMgr.shared.consolidateContextOnCandidateSelection, preConsolidate: PrefMgr.shared.consolidateContextOnCandidateSelection,
skipObservation: true skipObservation: true
) )
let inputting = generateStateOfInputting(sansReading: true) theState.data.displayTextSegments = compositor.walkedNodes.values
theState.data.displayTextSegments = inputting.data.displayTextSegments theState.data.cursor = convertCursorForDisplay(compositor.cursor)
theState.data.cursor = inputting.cursor let markerBackup = compositor.marker
theState.data.marker = inputting.marker if compositor.cursor == compositor.length {
compositor.jumpCursorBySpan(to: .rear, isMarker: true)
} else if compositor.cursor == 0 {
compositor.jumpCursorBySpan(to: .front, isMarker: true)
} else {
compositor.jumpCursorBySpan(to: prefs.useRearCursorMode ? .front : .rear, isMarker: true)
}
theState.data.marker = compositor.marker
compositor.marker = markerBackup
delegate.state = theState // switchState delegate.state = theState // switchState
delegate.setInlineDisplayWithCursor() delegate.setInlineDisplayWithCursor()
delegate.updatePopupDisplayWithCursor() delegate.updatePopupDisplayWithCursor()

View File

@ -124,11 +124,18 @@ extension InputHandler {
/// ///
/// - Returns: /// - Returns:
public func generateStateOfCandidates() -> IMEStateProtocol { public func generateStateOfCandidates() -> IMEStateProtocol {
IMEState.ofCandidates( var result = IMEState.ofCandidates(
candidates: generateArrayOfCandidates(fixOrder: prefs.useFixecCandidateOrderOnSelection), candidates: generateArrayOfCandidates(fixOrder: prefs.useFixecCandidateOrderOnSelection),
displayTextSegments: compositor.walkedNodes.values, displayTextSegments: compositor.walkedNodes.values,
cursor: delegate?.state.cursor ?? generateStateOfInputting().cursor cursor: delegate?.state.cursor ?? generateStateOfInputting().cursor
) )
if !prefs.useRearCursorMode {
let markerBackup = compositor.marker
compositor.jumpCursorBySpan(to: .rear, isMarker: true)
result.marker = compositor.marker
compositor.marker = markerBackup
}
return result
} }
// MARK: - // MARK: -