diff --git a/src/video/cocoa/SDL_cocoakeyboard.m b/src/video/cocoa/SDL_cocoakeyboard.m index df614e82d60dd..2443dbaf8a301 100644 --- a/src/video/cocoa/SDL_cocoakeyboard.m +++ b/src/video/cocoa/SDL_cocoakeyboard.m @@ -133,8 +133,12 @@ - (void)setMarkedText:(id)aString selectedRange:(NSRange)selectedRange replaceme // This key event was consumed by the IME [self clearPendingKey]; + NSUInteger utf32SelectedRangeLocation = [[aString substringToIndex:selectedRange.location] lengthOfBytesUsingEncoding:NSUTF32StringEncoding] / 4; + NSUInteger utf32SelectionRangeEnd = [[aString substringToIndex:(selectedRange.location + selectedRange.length)] lengthOfBytesUsingEncoding:NSUTF32StringEncoding] / 4; + NSUInteger utf32SelectionRangeLength = utf32SelectionRangeEnd - utf32SelectedRangeLocation; + SDL_SendEditingText([aString UTF8String], - (int)selectedRange.location, (int)selectedRange.length); + (int)utf32SelectedRangeLocation, (int)utf32SelectionRangeLength); DEBUG_IME(@"setMarkedText: %@, (%d, %d) replacement range (%d, %d)", _markedText, (int)selectedRange.location, (int)selectedRange.length,