@@ -726,6 +726,79 @@ void testMain() {
726
726
},
727
727
);
728
728
729
+ _testEach <_ButtonedEventMixin >(
730
+ < _ButtonedEventMixin > [
731
+ if (! isIosSafari) _PointerEventContext (),
732
+ if (! isIosSafari) _MouseEventContext (),
733
+ ],
734
+ 'does set pointer device kind based on delta precision' ,
735
+ (_ButtonedEventMixin context) {
736
+ PointerBinding .instance! .debugOverrideDetector (context);
737
+ final List <ui.PointerDataPacket > packets = < ui.PointerDataPacket > [];
738
+ ui.window.onPointerDataPacket = (ui.PointerDataPacket packet) {
739
+ packets.add (packet);
740
+ };
741
+
742
+ glassPane.dispatchEvent (context.wheel (
743
+ buttons: 0 ,
744
+ clientX: 10 ,
745
+ clientY: 10 ,
746
+ deltaX: 10 ,
747
+ deltaY: 10 ,
748
+ ));
749
+
750
+ glassPane.dispatchEvent (context.wheel (
751
+ buttons: 0 ,
752
+ clientX: 10 ,
753
+ clientY: 10 ,
754
+ deltaX: 0 ,
755
+ deltaY: 120 ,
756
+ ));
757
+
758
+ expect (packets, hasLength (2 ));
759
+
760
+ // An add will be synthesized.
761
+ expect (packets[0 ].data, hasLength (2 ));
762
+ expect (packets[0 ].data[0 ].change, equals (ui.PointerChange .add));
763
+ expect (packets[0 ].data[0 ].pointerIdentifier, equals (0 ));
764
+ expect (packets[0 ].data[0 ].synthesized, isTrue);
765
+ expect (packets[0 ].data[0 ].physicalX, equals (10.0 * dpi));
766
+ expect (packets[0 ].data[0 ].physicalY, equals (10.0 * dpi));
767
+ expect (packets[0 ].data[0 ].physicalDeltaX, equals (0.0 ));
768
+ expect (packets[0 ].data[0 ].physicalDeltaY, equals (0.0 ));
769
+ // Because the delta is not in increments of 120, it will be a trackpad event.
770
+ expect (packets[0 ].data[1 ].change, equals (ui.PointerChange .hover));
771
+ expect (
772
+ packets[0 ].data[1 ].signalKind, equals (ui.PointerSignalKind .scroll));
773
+ expect (
774
+ packets[0 ].data[1 ].kind, equals (ui.PointerDeviceKind .trackpad));
775
+ expect (packets[0 ].data[1 ].pointerIdentifier, equals (0 ));
776
+ expect (packets[0 ].data[1 ].synthesized, isFalse);
777
+ expect (packets[0 ].data[1 ].physicalX, equals (10.0 * dpi));
778
+ expect (packets[0 ].data[1 ].physicalY, equals (10.0 * dpi));
779
+ expect (packets[0 ].data[1 ].physicalDeltaX, equals (0.0 ));
780
+ expect (packets[0 ].data[1 ].physicalDeltaY, equals (0.0 ));
781
+ expect (packets[0 ].data[1 ].scrollDeltaX, equals (10.0 ));
782
+ expect (packets[0 ].data[1 ].scrollDeltaY, equals (10.0 ));
783
+
784
+ // Because the delta is in increments of 120, it will be a mouse event.
785
+ expect (packets[1 ].data, hasLength (1 ));
786
+ expect (packets[1 ].data[0 ].change, equals (ui.PointerChange .hover));
787
+ expect (
788
+ packets[1 ].data[0 ].signalKind, equals (ui.PointerSignalKind .scroll));
789
+ expect (
790
+ packets[1 ].data[0 ].kind, equals (ui.PointerDeviceKind .mouse));
791
+ expect (packets[1 ].data[0 ].pointerIdentifier, equals (0 ));
792
+ expect (packets[1 ].data[0 ].synthesized, isFalse);
793
+ expect (packets[1 ].data[0 ].physicalX, equals (10.0 * dpi));
794
+ expect (packets[1 ].data[0 ].physicalY, equals (10.0 * dpi));
795
+ expect (packets[1 ].data[0 ].physicalDeltaX, equals (0.0 ));
796
+ expect (packets[1 ].data[0 ].physicalDeltaY, equals (0.0 ));
797
+ expect (packets[1 ].data[0 ].scrollDeltaX, equals (0.0 ));
798
+ expect (packets[1 ].data[0 ].scrollDeltaY, equals (120.0 ));
799
+ },
800
+ );
801
+
729
802
_testEach <_ButtonedEventMixin >(
730
803
< _ButtonedEventMixin > [
731
804
if (! isIosSafari) _PointerEventContext (),
0 commit comments