summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-06-02 11:32:19 -0400
committerPietro Gagliardi <[email protected]>2014-06-02 11:32:19 -0400
commit351177bc23c85d032a6e76f2c54e3a1ae28472fa (patch)
tree893129ce2e16f65ca4edf270e2c75b68546667cc
parenta9ecc296ef260a8c73dcf255616bf630bba0e48f (diff)
Implemented the new Area event handling on Windows.
-rw-r--r--area_windows.go21
1 files changed, 7 insertions, 14 deletions
diff --git a/area_windows.go b/area_windows.go
index 5302a2e..0def2be 100644
--- a/area_windows.go
+++ b/area_windows.go
@@ -496,7 +496,7 @@ func areaMouseEvent(s *sysData, button uint, up bool, wparam _WPARAM, lparam _LP
}
}
-func areaKeyEvent(s *sysData, up bool, wparam _WPARAM, lparam _LPARAM) bool {
+func areaKeyEvent(s *sysData, up bool, wparam _WPARAM, lparam _LPARAM) {
var ke KeyEvent
scancode := byte((lparam >> 16) & 0xFF)
@@ -516,15 +516,14 @@ func areaKeyEvent(s *sysData, up bool, wparam _WPARAM, lparam _LPARAM) bool {
ke.Key = xke.Key
ke.ExtKey = xke.ExtKey
} else if ke.Modifiers == 0 {
- // no key, extkey, or modifiers; do nothing but mark not handled
- return false
+ // no key, extkey, or modifiers; do nothing
+ return
}
ke.Up = up
- handled, repaint := s.handler.Key(ke)
+ repaint := s.handler.Key(ke)
if repaint {
repaintArea(s)
}
- return handled
}
var extkeys = map[_WPARAM]ExtKey{
@@ -669,18 +668,12 @@ func areaWndProc(hwnd _HWND, uMsg uint32, wParam _WPARAM, lParam _LPARAM) _LRESU
case _WM_KEYUP:
areaKeyEvent(s, true, wParam, lParam)
return 0
- // Alt+[anything] and F10 send these instead
+ // Alt+[anything] and F10 send these instead and require us to return to DefWindowProc() so global keystrokes such as Alt+Tab can be processed
case _WM_SYSKEYDOWN:
- handled := areaKeyEvent(s, false, wParam, lParam)
- if handled {
- return 0
- }
+ areaKeyEvent(s, false, wParam, lParam)
return defWindowProc(hwnd, uMsg, wParam, lParam)
case _WM_SYSKEYUP:
- handled := areaKeyEvent(s, true, wParam, lParam)
- if handled {
- return 0
- }
+ areaKeyEvent(s, true, wParam, lParam)
return defWindowProc(hwnd, uMsg, wParam, lParam)
case msgSetAreaSize:
s.areawidth = int(wParam) // see setAreaSize() in sysdata_windows.go