app: [Windows] include keyboard modifiers in move, drag, and scroll pointer events

This matches the behavior on Linux and macOS.

Signed-off-by: Dominik Honnef <dominik@honnef.co>
This commit is contained in:
Dominik Honnef
2023-04-15 01:11:15 +02:00
committed by Elias Naur
parent b6e0376ad2
commit cda73efa6a
+16 -14
View File
@@ -304,16 +304,17 @@ func windowProc(hwnd syscall.Handle, msg uint32, wParam, lParam uintptr) uintptr
x, y := coordsFromlParam(lParam)
p := f32.Point{X: float32(x), Y: float32(y)}
w.w.Event(pointer.Event{
Type: pointer.Move,
Source: pointer.Mouse,
Position: p,
Buttons: w.pointerBtns,
Time: windows.GetMessageTime(),
Type: pointer.Move,
Source: pointer.Mouse,
Position: p,
Buttons: w.pointerBtns,
Time: windows.GetMessageTime(),
Modifiers: getModifiers(),
})
case windows.WM_MOUSEWHEEL:
w.scrollEvent(wParam, lParam, false)
w.scrollEvent(wParam, lParam, false, getModifiers())
case windows.WM_MOUSEHWHEEL:
w.scrollEvent(wParam, lParam, true)
w.scrollEvent(wParam, lParam, true, getModifiers())
case windows.WM_DESTROY:
w.w.Event(ViewEvent{})
w.w.Event(system.DestroyEvent{})
@@ -518,7 +519,7 @@ func coordsFromlParam(lParam uintptr) (int, int) {
return x, y
}
func (w *window) scrollEvent(wParam, lParam uintptr, horizontal bool) {
func (w *window) scrollEvent(wParam, lParam uintptr, horizontal bool, kmods key.Modifiers) {
x, y := coordsFromlParam(lParam)
// The WM_MOUSEWHEEL coordinates are in screen coordinates, in contrast
// to other mouse events.
@@ -533,12 +534,13 @@ func (w *window) scrollEvent(wParam, lParam uintptr, horizontal bool) {
sp.Y = -dist
}
w.w.Event(pointer.Event{
Type: pointer.Scroll,
Source: pointer.Mouse,
Position: p,
Buttons: w.pointerBtns,
Scroll: sp,
Time: windows.GetMessageTime(),
Type: pointer.Scroll,
Source: pointer.Mouse,
Position: p,
Buttons: w.pointerBtns,
Scroll: sp,
Modifiers: kmods,
Time: windows.GetMessageTime(),
})
}