win32: another try for horizontal wheel events
This commit is contained in:
parent
342964b10a
commit
37f9363b90
|
@ -192,7 +192,7 @@
|
||||||
(define WM_XBUTTONDOWN #x020B)
|
(define WM_XBUTTONDOWN #x020B)
|
||||||
(define WM_XBUTTONUP #x020C)
|
(define WM_XBUTTONUP #x020C)
|
||||||
(define WM_XBUTTONDBLCLK #x020D)
|
(define WM_XBUTTONDBLCLK #x020D)
|
||||||
(define WM_MOUSELAST #x020D)
|
(define WM_MOUSEHWHEEL #x020E)
|
||||||
|
|
||||||
;; Value for rolling one detent
|
;; Value for rolling one detent
|
||||||
(define WHEEL_DELTA 120)
|
(define WHEEL_DELTA 120)
|
||||||
|
|
|
@ -191,19 +191,11 @@
|
||||||
[(= msg WM_CHAR)
|
[(= msg WM_CHAR)
|
||||||
(do-key w msg wParam lParam #t #f default)]
|
(do-key w msg wParam lParam #t #f default)]
|
||||||
[(= msg WM_MOUSEWHEEL)
|
[(= msg WM_MOUSEWHEEL)
|
||||||
(let ([gen-wheels
|
(gen-wheels w msg lParam (HIWORD wParam) 'wheel-down 'wheel-up)
|
||||||
(lambda (val down up)
|
|
||||||
(let ([orig-delta (quotient val WHEEL_DELTA)])
|
|
||||||
(let loop ([delta (abs orig-delta)])
|
|
||||||
(unless (zero? delta)
|
|
||||||
(do-key w msg (if (negative? orig-delta)
|
|
||||||
down
|
|
||||||
up)
|
|
||||||
lParam #f #f void)
|
|
||||||
(loop (sub1 delta))))))])
|
|
||||||
(gen-wheels (HIWORD wParam) 'wheel-down 'wheel-up)
|
|
||||||
(gen-wheels (LOWORD wParam) 'wheel-left 'wheel-right))
|
|
||||||
0]
|
0]
|
||||||
|
[(= msg WM_MOUSEHWHEEL) ; Vista and later
|
||||||
|
(gen-wheels w msg lParam (HIWORD wParam) 'wheel-left 'wheel-right)
|
||||||
|
0]
|
||||||
[(= msg WM_COMMAND)
|
[(= msg WM_COMMAND)
|
||||||
(let* ([control-hwnd (cast lParam _LPARAM _HWND)]
|
(let* ([control-hwnd (cast lParam _LPARAM _HWND)]
|
||||||
[wx (any-hwnd->wx control-hwnd)]
|
[wx (any-hwnd->wx control-hwnd)]
|
||||||
|
@ -513,6 +505,16 @@
|
||||||
(define/public (get-top-frame)
|
(define/public (get-top-frame)
|
||||||
(send parent get-top-frame))
|
(send parent get-top-frame))
|
||||||
|
|
||||||
|
(define/private (gen-wheels w msg lParam val down up)
|
||||||
|
(let ([orig-delta (quotient val WHEEL_DELTA)])
|
||||||
|
(let loop ([delta (abs orig-delta)])
|
||||||
|
(unless (zero? delta)
|
||||||
|
(do-key w msg (if (negative? orig-delta)
|
||||||
|
down
|
||||||
|
up)
|
||||||
|
lParam #f #f void)
|
||||||
|
(loop (sub1 delta))))))
|
||||||
|
|
||||||
(define/private (do-key w msg wParam lParam is-char? is-up? default)
|
(define/private (do-key w msg wParam lParam is-char? is-up? default)
|
||||||
(let ([e (make-key-event #f wParam lParam is-char? is-up? hwnd)])
|
(let ([e (make-key-event #f wParam lParam is-char? is-up? hwnd)])
|
||||||
(if (and e
|
(if (and e
|
||||||
|
|
Loading…
Reference in New Issue
Block a user