setting a flag, so that the first movement will have the correct value (#13082)
Jason Williams committed
Jun 20, 2018 at 22:48 UTC
5b3d17a5f729eb204371ad1953a07ec3ae3dae00
1 file changed
+19
-4
packages/react-dom/src/events/SyntheticMouseEvent.js
+19
-4
@@ -8,8 +8,11 @@
8
import SyntheticUIEvent from './SyntheticUIEvent';
9
import getEventModifierState from './getEventModifierState';
10
11
-let previousScreenX = null;
12
-let previousScreenY = null;
11
+let previousScreenX = 0;
12
+let previousScreenY = 0;
13
+// Use flags to signal movementX/Y has already been set
14
+let isMovementXSet = false;
15
+let isMovementYSet = false;
16
17
/**
18
* @interface MouseEvent
@@ -44,7 +47,13 @@ const SyntheticMouseEvent = SyntheticUIEvent.extend({
47
48
const screenX = previousScreenX;
49
previousScreenX = event.screenX;
47
- return screenX ? event.screenX - screenX : 0;
50
+
51
+ if (!isMovementXSet) {
52
+ isMovementXSet = true;
53
+ return 0;
54
+ }
55
+
56
+ return event.screenX - screenX;
57
},
58
movementY: function(event) {
59
if ('movementY' in event) {
@@ -53,7 +62,13 @@ const SyntheticMouseEvent = SyntheticUIEvent.extend({
62
63
const screenY = previousScreenY;
64
previousScreenY = event.screenY;
56
- return screenY ? event.screenY - screenY : 0;
65
+
66
+ if (!isMovementYSet) {
67
+ isMovementYSet = true;
68
+ return 0;
69
+ }
70
+
71
+ return event.screenY - screenY;
72
},
73
});
74