@@ -76,8 +76,9 @@ let average_time = 0.1
7676
7777type status =
7878 | Stopped
79- | Start of (int * int * float ) (* Just started, x, y positions, timestamp *)
80- | Ongoing of (int * int * int * float * int * float )
79+ | Start of (float * float * float )
80+ (* Just started, x, y positions, timestamp *)
81+ | Ongoing of (float * float * int * float * float * float )
8182
8283(* Ongoing swipe, (x start position,
8384 y start position,
@@ -189,7 +190,7 @@ let%shared make ?(a = []) ?(vertical = false) ?(position = 0)
189190 let maxi () = ~% maxi - React.S. value ~% nb_visible_elements + 1 in
190191 let pos_signal = ~% pos_signal in
191192 let pos_set = ~% pos_set in
192- let action = ref (`Move (0 , 0 )) in
193+ let action = ref (`Move (0. , 0 )) in
193194 let animation_frame_requested = ref false in
194195 (* *********************
195196 setting class active on visible pages (only)
@@ -349,17 +350,21 @@ let%shared make ?(a = []) ?(vertical = false) ?(position = 0)
349350 React.S. value ~% pos_signal * width_element
350351 in
351352 let m = (- width_element * maxi () ) + global_delta in
352- min global_delta (max delta m )
353+ min ( float global_delta) (max delta ( float m) )
353354 in
354355 let pos = Eliom_shared.React.S. value pos_signal in
355- ~% swipe_pos_set (-. float delta /. float width_element);
356- let s = ~% make_transform ~vertical ~delta pos in
356+ ~% swipe_pos_set (-. delta /. float width_element);
357+ let s =
358+ ~% make_transform ~vertical
359+ ~delta: (int_of_float (delta +. 0.5 ))
360+ pos
361+ in
357362 (Js.Unsafe. coerce d2'##.style)##.transform := s;
358363 (Js.Unsafe. coerce d2'##.style)##.webkitTransform := s
359364 | `Goback position | `Change position ->
360365 Manip.Class. add ~% d2 ot_swiping;
361366 set_top_margin () ;
362- action := `Move (0 , 0 );
367+ action := `Move (0. , 0 );
363368 set_position ~transitionend: unset_top_margin position);
364369 Lwt. return_unit)
365370 else Lwt. return_unit)
@@ -373,7 +378,7 @@ let%shared make ?(a = []) ?(vertical = false) ?(position = 0)
373378 if delta_t = 0.
374379 then prev_speed
375380 else
376- let cur_speed = (float delta -. float prev_delta) /. delta_t in
381+ let cur_speed = (delta -. prev_delta) /. delta_t in
377382 if delta_t > = average_time
378383 then cur_speed
379384 else
@@ -386,14 +391,17 @@ let%shared make ?(a = []) ?(vertical = false) ?(position = 0)
386391 let onpan ev _ =
387392 (match ! status with
388393 | Start (startx , starty , prev_timestamp ) ->
389- let move = if vertical then clY ev - starty else clX ev - startx in
394+ let move =
395+ if vertical then clY ev -. starty else clX ev -. startx
396+ in
390397 status :=
391- if abs (if vertical then clX ev - startx else clY ev - starty)
392- > = abs move
398+ if abs_float
399+ (if vertical then clX ev -. startx else clY ev -. starty)
400+ > = abs_float move
393401 then
394402 Stopped
395403 (* swiping in wrong direction (vertical/horizontal) *)
396- else if abs move > Ot_swipe. threshold
404+ else if abs_float move > Ot_swipe. threshold
397405 then (
398406 (* We decide to take the event *)
399407 (* We send a touchcancel to the parent
@@ -404,9 +412,7 @@ let%shared make ?(a = []) ?(vertical = false) ?(position = 0)
404412 remove_transition d2';
405413 let timestamp = now () in
406414 let delta_t = timestamp -. prev_timestamp in
407- let speed =
408- if delta_t = 0. then 0. else float move /. delta_t
409- in
415+ let speed = if delta_t = 0. then 0. else move /. delta_t in
410416 Ongoing
411417 (startx, starty, width_element () , speed, move, timestamp))
412418 else ! status
@@ -424,7 +430,7 @@ let%shared make ?(a = []) ?(vertical = false) ?(position = 0)
424430 (* in case there is a carousel
425431 in a carousel, e.g. *)
426432 let delta =
427- if vertical then clY ev - starty else clX ev - startx
433+ if vertical then clY ev -. starty else clX ev -. startx
428434 in
429435 let timestamp, speed =
430436 compute_speed prev_speed prev_delta prev_timestamp delta
@@ -445,16 +451,18 @@ let%shared make ?(a = []) ?(vertical = false) ?(position = 0)
445451 status := Stopped ;
446452 let width, delta =
447453 if vertical
448- then d2'##.offsetHeight, clY ev - starty
449- else d2'##.offsetWidth, clX ev - startx
454+ then d2'##.offsetHeight, clY ev -. starty
455+ else d2'##.offsetWidth, clX ev -. startx
450456 in
451457 let timestamp, speed =
452458 compute_speed prev_speed prev_delta prev_timestamp delta
453459 in
454460 let pos = Eliom_shared.React.S. value pos_signal in
455461 let delta =
456- delta
457- + (int_of_float (speed *. ~% transition_duration *. ~% inertia) / 2 )
462+ int_of_float
463+ (delta
464+ +. (speed *. ~% transition_duration *. ~% inertia /. 2. )
465+ +. 0.5 )
458466 in
459467 let rem = delta mod width in
460468 let nbpages =
@@ -475,7 +483,7 @@ let%shared make ?(a = []) ?(vertical = false) ?(position = 0)
475483 let touchend ev _ =
476484 match ! status with
477485 | Start (startx , starty , timestamp ) ->
478- do_end ev startx starty 0. 0 timestamp
486+ do_end ev startx starty 0. 0. timestamp
479487 | Ongoing (startx , starty , _width , speed , delta , timestamp ) ->
480488 do_end ev startx starty speed delta timestamp
481489 | _ -> Lwt. return_unit
@@ -549,7 +557,7 @@ let%shared default_fail_fun e =
549557 let e = Printexc. to_string e in
550558 ignore
551559 [% client
552- (Firebug . console##error
560+ (Console . console##error
553561 (Js. string (" Ot_carousel content failed with " ^ ~% e))
554562 : unit )];
555563 em ~a: [a_class [" ot-icon-error" ]] []
0 commit comments