@@ -271,6 +271,11 @@ type mouse_button =
271
271
| Middle_button
272
272
| Right_button
273
273
274
+ type delta_mode =
275
+ | Delta_pixel
276
+ | Delta_line
277
+ | Delta_page
278
+
274
279
class type event =
275
280
object
276
281
inherit [element] Dom. event
@@ -356,14 +361,22 @@ and keyboardEvent =
356
361
357
362
and mousewheelEvent =
358
363
object
359
- (* All browsers but Firefox *)
364
+ (* All modern browsers *)
360
365
inherit mouseEvent
361
366
362
367
method wheelDelta : int readonly_prop
363
368
364
369
method wheelDeltaX : int optdef readonly_prop
365
370
366
371
method wheelDeltaY : int optdef readonly_prop
372
+
373
+ method deltaX : float readonly_prop
374
+
375
+ method deltaY : float readonly_prop
376
+
377
+ method deltaZ : float readonly_prop
378
+
379
+ method deltaMode : delta_mode readonly_prop
367
380
end
368
381
369
382
and mouseScrollEvent =
@@ -495,6 +508,8 @@ and eventTarget =
495
508
496
509
method onscroll : ('self t, event t) event_listener writeonly_prop
497
510
511
+ method onwheel : ('self t, mousewheelEvent t) event_listener writeonly_prop
512
+
498
513
method ondragstart : ('self t, dragEvent t) event_listener writeonly_prop
499
514
500
515
method ondragend : ('self t, dragEvent t) event_listener writeonly_prop
@@ -793,6 +808,8 @@ module Event = struct
793
808
794
809
let mousewheel = Dom.Event. make " mousewheel"
795
810
811
+ let wheel = Dom.Event. make " wheel"
812
+
796
813
let _DOMMouseScroll = Dom.Event. make " DOMMouseScroll"
797
814
798
815
let touchstart = Dom.Event. make " touchstart"
@@ -2885,36 +2902,17 @@ let buttonPressed (ev : #mouseEvent Js.t) =
2885
2902
| _ -> No_button )
2886
2903
(fun x -> x)
2887
2904
2888
- let hasMousewheelEvents () =
2889
- let d = createDiv document in
2890
- d##setAttribute (Js. string " onmousewheel" ) (Js. string " return;" );
2891
- Js. typeof (Js.Unsafe. get d (Js. string " onmousewheel" )) == Js. string " function"
2892
-
2893
2905
let addMousewheelEventListenerWithOptions e ?capture ?once ?passive h =
2894
- if hasMousewheelEvents ()
2895
- then
2896
- addEventListenerWithOptions
2897
- ?capture
2898
- ?once
2899
- ?passive
2900
- e
2901
- Event. mousewheel
2902
- (handler (fun (e : mousewheelEvent t ) ->
2903
- let dx = - Optdef. get e##.wheelDeltaX (fun () -> 0 ) / 40 in
2904
- let dy = - Optdef. get e##.wheelDeltaY (fun () -> e##.wheelDelta) / 40 in
2905
- h (e :> mouseEvent t ) ~dx ~dy ))
2906
- else
2907
- addEventListenerWithOptions
2908
- ?capture
2909
- ?once
2910
- ?passive
2911
- e
2912
- Event. _DOMMouseScroll
2913
- (handler (fun (e : mouseScrollEvent t ) ->
2914
- let d = e##.detail in
2915
- if e##.axis == e##._HORIZONTAL_AXIS
2916
- then h (e :> mouseEvent t ) ~dx: d ~dy: 0
2917
- else h (e :> mouseEvent t ) ~dx: 0 ~dy: d))
2906
+ addEventListenerWithOptions
2907
+ ?capture
2908
+ ?once
2909
+ ?passive
2910
+ e
2911
+ Event. wheel
2912
+ (handler (fun (e : mousewheelEvent t ) ->
2913
+ let dx = - Optdef. get e##.wheelDeltaX (fun () -> 0 ) / 40 in
2914
+ let dy = - Optdef. get e##.wheelDeltaY (fun () -> e##.wheelDelta) / 40 in
2915
+ h (e :> mouseEvent t ) ~dx ~dy ))
2918
2916
2919
2917
let addMousewheelEventListener e h capt =
2920
2918
addMousewheelEventListenerWithOptions ~capture: capt e h
0 commit comments