diff --git a/src/windy/platforms/macos/macdefs.nim b/src/windy/platforms/macos/macdefs.nim index fc0de19..3a5e698 100644 --- a/src/windy/platforms/macos/macdefs.nim +++ b/src/windy/platforms/macos/macdefs.nim @@ -130,6 +130,7 @@ type NSImage* = distinct NSObject NSCursor* = distinct NSObject NSTextInputContext* = distinct NSObject + NSTextInputClient* = distinct int const NSNotFound* = int.high @@ -935,4 +936,12 @@ proc activate*(context: NSTextInputContext) = s"activate", ) +proc insertText2*(client: NSTextInputClient, obj: ID, range: NSRange) = + discard objc_msgSend( + client.ID, + s"insertText:replacementRange:", + obj, + range + ) + {.pop.} diff --git a/src/windy/platforms/macos/platform.nim b/src/windy/platforms/macos/platform.nim index 9207eae..b697e2b 100644 --- a/src/windy/platforms/macos/platform.nim +++ b/src/windy/platforms/macos/platform.nim @@ -105,9 +105,7 @@ proc closeIme*(window: Window) = return if window.markedText.int != 0: - discard objc_msgSend( - window.inner.contentView.ID, - s"insertText:replacementRange:", + window.inner.contentView.NSTextInputClient.insertText2( window.markedText.ID, kEmptyRange ) @@ -353,11 +351,11 @@ proc mouseMoved(self: ID, cmd: SEL, event: NSEvent): ID {.cdecl.} = let locationInWindow = event.locationInWindow - x = round(locationInWindow.x).int32 - y = round(self.NSView.bounds.size.height - locationInWindow.y).int32 + x = round(locationInWindow.x) + y = round(self.NSView.bounds.size.height - locationInWindow.y) window.state.mousePrevPos = window.state.mousePos - window.state.mousePos = ivec2(x, y) + window.state.mousePos = (vec2(x, y) * window.contentScale).ivec2 window.state.perFrame.mouseDelta += window.state.mousePos - window.state.mousePrevPos