diff --git a/redo/area_darwin.go b/redo/area_darwin.go index b6140b2..1cb2e4b 100644 --- a/redo/area_darwin.go +++ b/redo/area_darwin.go @@ -60,25 +60,17 @@ func areaView_drawRect(self C.id, rect C.struct_xrect, data unsafe.Pointer) { } func parseModifiers(e C.id) (m Modifiers) { - const ( - // TODO define these on the Objective-C side - _NSShiftKeyMask = 1 << 17 - _NSControlKeyMask = 1 << 18 - _NSAlternateKeyMask = 1 << 19 - _NSCommandKeyMask = 1 << 20 - ) - - mods := uintptr(C.modifierFlags(e)) - if (mods & _NSControlKeyMask) != 0 { + mods := C.modifierFlags(e) + if (mods & C.cNSControlKeyMask) != 0 { m |= Ctrl } - if (mods & _NSAlternateKeyMask) != 0 { + if (mods & C.cNSAlternateKeyMask) != 0 { m |= Alt } - if (mods & _NSShiftKeyMask) != 0 { + if (mods & C.cNSShiftKeyMask) != 0 { m |= Shift } - if (mods & _NSCommandKeyMask) != 0 { + if (mods & C.cNSCommandKeyMask) != 0 { m |= Super } return m diff --git a/redo/area_darwin.m b/redo/area_darwin.m index 1f7ece6..f99737f 100644 --- a/redo/area_darwin.m +++ b/redo/area_darwin.m @@ -140,6 +140,12 @@ BOOL drawImage(void *pixels, intptr_t width, intptr_t height, intptr_t stride, i return success; } +// can't include the header file with these from the Go side since it's an Objective-C header file; keep them here to be safe +const uintptr_t cNSShiftKeyMask = (uintptr_t) NSShiftKeyMask; +const uintptr_t cNSControlKeyMask = (uintptr_t) NSControlKeyMask; +const uintptr_t cNSAlternateKeyMask = (uintptr_t) NSAlternateKeyMask; +const uintptr_t cNSCommandKeyMask = (uintptr_t) NSCommandKeyMask; + uintptr_t modifierFlags(id e) { return fromNSUInteger([toNSEvent(e) modifierFlags]); diff --git a/redo/objc_darwin.h b/redo/objc_darwin.h index 99089fc..dd5ff9d 100644 --- a/redo/objc_darwin.h +++ b/redo/objc_darwin.h @@ -102,6 +102,10 @@ extern struct xalignment alignmentInfoFrame(id); extern Class getAreaClass(void); extern id newArea(void *); extern BOOL drawImage(void *, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t); +extern const uintptr_t cNSShiftKeyMask; +extern const uintptr_t cNSControlKeyMask; +extern const uintptr_t cNSAlternateKeyMask; +extern const uintptr_t cNSCommandKeyMask; extern uintptr_t modifierFlags(id); extern struct xpoint getTranslatedEventPoint(id, id); extern intptr_t buttonNumber(id);