diff options
| author | Pietro Gagliardi <[email protected]> | 2014-06-02 11:32:19 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-06-02 11:32:19 -0400 |
| commit | 351177bc23c85d032a6e76f2c54e3a1ae28472fa (patch) | |
| tree | 893129ce2e16f65ca4edf270e2c75b68546667cc | |
| parent | a9ecc296ef260a8c73dcf255616bf630bba0e48f (diff) | |
Implemented the new Area event handling on Windows.
| -rw-r--r-- | area_windows.go | 21 |
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 |
