diff options
| author | Pietro Gagliardi <[email protected]> | 2014-08-21 10:19:08 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-08-21 10:19:08 -0400 |
| commit | c9f8955758545c08bb8b58bab094e5fd4ff3562b (patch) | |
| tree | fc7ec806751e31fde0fd74606a7d52ee33321e09 /redo/area_darwin.go | |
| parent | d53dba9e3861d4ca0ea900b24de88665a8125d14 (diff) | |
Implemented the new AreaHandler.Key() on Mac OS X.
Diffstat (limited to 'redo/area_darwin.go')
| -rw-r--r-- | redo/area_darwin.go | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/redo/area_darwin.go b/redo/area_darwin.go index c4c3d26..509c05d 100644 --- a/redo/area_darwin.go +++ b/redo/area_darwin.go @@ -140,38 +140,39 @@ func areaView_mouseUp(self C.id, e C.id, data unsafe.Pointer) { areaMouseEvent(self, e, true, true, data) } -func sendKeyEvent(self C.id, ke KeyEvent, data unsafe.Pointer) { +func sendKeyEvent(self C.id, ke KeyEvent, data unsafe.Pointer) C.BOOL { a := (*area)(data) - a.handler.Key(ke) + handled := a.handler.Key(ke) + return toBOOL(handled) } -func areaKeyEvent(self C.id, e C.id, up bool, data unsafe.Pointer) { +func areaKeyEvent(self C.id, e C.id, up bool, data unsafe.Pointer) C.BOOL { var ke KeyEvent keyCode := uintptr(C.keyCode(e)) ke, ok := fromKeycode(keyCode) if !ok { // no such key; modifiers by themselves are handled by -[self flagsChanged:] - return + return C.NO } // either ke.Key or ke.ExtKey will be set at this point ke.Modifiers = parseModifiers(e) ke.Up = up - sendKeyEvent(self, ke, data) + return sendKeyEvent(self, ke, data) } //export areaView_keyDown -func areaView_keyDown(self C.id, e C.id, data unsafe.Pointer) { - areaKeyEvent(self, e, false, data) +func areaView_keyDown(self C.id, e C.id, data unsafe.Pointer) C.BOOL { + return areaKeyEvent(self, e, false, data) } //export areaView_keyUp -func areaView_keyUp(self C.id, e C.id, data unsafe.Pointer) { - areaKeyEvent(self, e, true, data) +func areaView_keyUp(self C.id, e C.id, data unsafe.Pointer) C.BOOL { + return areaKeyEvent(self, e, true, data) } //export areaView_flagsChanged -func areaView_flagsChanged(self C.id, e C.id, data unsafe.Pointer) { +func areaView_flagsChanged(self C.id, e C.id, data unsafe.Pointer) C.BOOL { var ke KeyEvent // Mac OS X sends this event on both key up and key down. @@ -179,14 +180,14 @@ func areaView_flagsChanged(self C.id, e C.id, data unsafe.Pointer) { keyCode := uintptr(C.keyCode(e)) mod, ok := keycodeModifiers[keyCode] // comma-ok form to avoid adding entries if !ok { // unknown modifier; ignore - return + return C.NO } ke.Modifiers = parseModifiers(e) ke.Up = (ke.Modifiers & mod) == 0 ke.Modifier = mod // don't include the modifier in ke.Modifiers ke.Modifiers &^= mod - sendKeyEvent(self, ke, data) + return sendKeyEvent(self, ke, data) } func (a *area) id() C.id { |
