summaryrefslogtreecommitdiff
path: root/area_windows.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-04-29 16:26:29 -0400
committerPietro Gagliardi <[email protected]>2014-04-29 16:26:29 -0400
commit2528fa9cfd44195cb9e4842f30904feaec3d9321 (patch)
tree2cafd1331a7f165b049ca70f75a8b5e66db97feb /area_windows.go
parenta98072a23b7fea98e5b1565af9ef548f1e20d02a (diff)
Added extra mouse buttons to Areas on Windows.
Diffstat (limited to 'area_windows.go')
-rw-r--r--area_windows.go20
1 files changed, 18 insertions, 2 deletions
diff --git a/area_windows.go b/area_windows.go
index 3cd1e75..a7ee44c 100644
--- a/area_windows.go
+++ b/area_windows.go
@@ -483,7 +483,12 @@ func areaMouseEvent(s *sysData, button uint, up bool, count uint, wparam _WPARAM
if button != 3 && (wparam & _MK_RBUTTON) != 0 {
me.Held = append(me.Held, 3)
}
- // TODO XBUTTONs?
+ if button != 4 && (wparam & _MK_XBUTTON1) != 0 {
+ me.Held = append(me.Held, 4)
+ }
+ if button != 5 && (wparam & _MK_XBUTTON2) != 0 {
+ me.Held = append(me.Held, 5)
+ }
repaint := s.handler.Mouse(me)
if repaint {
repaintArea(s)
@@ -654,7 +659,18 @@ func areaWndProc(s *sysData) func(hwnd _HWND, uMsg uint32, wParam _WPARAM, lPara
case _WM_RBUTTONUP:
areaMouseEvent(s, 3, true, 0, wParam, lParam)
return 0
- // TODO XBUTTONs?
+ case _WM_XBUTTONDOWN:
+ which := uint((wParam >> 16) & 0xFFFF) + 3 // values start at 1; we want them to start at 4
+ areaMouseEvent(s, which, false, 1, wParam, lParam)
+ return _LRESULT(_TRUE) // XBUTTON messages are different!
+ case _WM_XBUTTONDBLCLK:
+ which := uint((wParam >> 16) & 0xFFFF) + 3
+ areaMouseEvent(s, which, false, 2, wParam, lParam)
+ return _LRESULT(_TRUE)
+ case _WM_XBUTTONUP:
+ which := uint((wParam >> 16) & 0xFFFF) + 3
+ areaMouseEvent(s, which, true, 0, wParam, lParam)
+ return _LRESULT(_TRUE)
case _WM_KEYDOWN:
areaKeyEvent(s, false, wParam, lParam)
return 0