summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-11 11:52:10 -0400
committerPietro Gagliardi <[email protected]>2014-08-11 11:52:10 -0400
commitbb8603ed4e169cc4a9666e462cc5cd4f341ad100 (patch)
treead7310294dbb5997aa7463e87ab3931881515de7
parent5a67a81e0bf7e91635546597dfb1a15d28dca593 (diff)
Moved Mac OS X modifier flags constants to the Objective-C side for maximum safety.
-rw-r--r--redo/area_darwin.go18
-rw-r--r--redo/area_darwin.m6
-rw-r--r--redo/objc_darwin.h4
3 files changed, 15 insertions, 13 deletions
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);