Moved Mac OS X modifier flags constants to the Objective-C side for maximum safety.

This commit is contained in:
Pietro Gagliardi 2014-08-11 11:52:10 -04:00
parent 5a67a81e0b
commit bb8603ed4e
3 changed files with 15 additions and 13 deletions

View File

@ -60,25 +60,17 @@ func areaView_drawRect(self C.id, rect C.struct_xrect, data unsafe.Pointer) {
} }
func parseModifiers(e C.id) (m Modifiers) { func parseModifiers(e C.id) (m Modifiers) {
const ( mods := C.modifierFlags(e)
// TODO define these on the Objective-C side if (mods & C.cNSControlKeyMask) != 0 {
_NSShiftKeyMask = 1 << 17
_NSControlKeyMask = 1 << 18
_NSAlternateKeyMask = 1 << 19
_NSCommandKeyMask = 1 << 20
)
mods := uintptr(C.modifierFlags(e))
if (mods & _NSControlKeyMask) != 0 {
m |= Ctrl m |= Ctrl
} }
if (mods & _NSAlternateKeyMask) != 0 { if (mods & C.cNSAlternateKeyMask) != 0 {
m |= Alt m |= Alt
} }
if (mods & _NSShiftKeyMask) != 0 { if (mods & C.cNSShiftKeyMask) != 0 {
m |= Shift m |= Shift
} }
if (mods & _NSCommandKeyMask) != 0 { if (mods & C.cNSCommandKeyMask) != 0 {
m |= Super m |= Super
} }
return m return m

View File

@ -140,6 +140,12 @@ BOOL drawImage(void *pixels, intptr_t width, intptr_t height, intptr_t stride, i
return success; 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) uintptr_t modifierFlags(id e)
{ {
return fromNSUInteger([toNSEvent(e) modifierFlags]); return fromNSUInteger([toNSEvent(e) modifierFlags]);

View File

@ -102,6 +102,10 @@ extern struct xalignment alignmentInfoFrame(id);
extern Class getAreaClass(void); extern Class getAreaClass(void);
extern id newArea(void *); extern id newArea(void *);
extern BOOL drawImage(void *, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t); 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 uintptr_t modifierFlags(id);
extern struct xpoint getTranslatedEventPoint(id, id); extern struct xpoint getTranslatedEventPoint(id, id);
extern intptr_t buttonNumber(id); extern intptr_t buttonNumber(id);