Skip to content

Commit d95c545

Browse files
Brandon DailBrandon Dail
authored andcommitted
Add support for movementX/Y in SyntheticMouseEvent
Register screenX/Y after calculating values Fix movementY variable name error Linting fix Return 0 in instanes where previous values are null
1 parent 9ddf9e1 commit d95c545

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

src/renderers/dom/client/syntheticEvents/SyntheticMouseEvent.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
var SyntheticUIEvent = require('SyntheticUIEvent');
1515
var ViewportMetrics = require('ViewportMetrics');
16+
var MouseMetrics = require('MouseMetrics');
1617

1718
var getEventModifierState = require('getEventModifierState');
1819

@@ -63,6 +64,28 @@ var MouseEventInterface = {
6364
event.pageY :
6465
event.clientY + ViewportMetrics.currentScrollTop;
6566
},
67+
movementX: function(event) {
68+
if ('movementX' in event) {
69+
return event.movementX;
70+
}
71+
var previousScreenX = MouseMetrics.previousScreenX;
72+
MouseMetrics.setPreviousScreenX(event.screenX);
73+
if (previousScreenX === null) {
74+
return 0;
75+
}
76+
return event.screenX - previousScreenX;
77+
},
78+
movementY: function(event) {
79+
if ('movementY' in event) {
80+
return event.movementY;
81+
}
82+
var previousScreenY = MouseMetrics.previousScreenY;
83+
MouseMetrics.setPreviousScreenY(event.screenY);
84+
if (previousScreenY === null) {
85+
return 0;
86+
}
87+
return event.screenY - previousScreenY;
88+
},
6689
};
6790

6891
/**
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* Copyright 2013-present, Facebook, Inc.
3+
* All rights reserved.
4+
*
5+
* This source code is licensed under the BSD-style license found in the
6+
* LICENSE file in the root directory of this source tree. An additional grant
7+
* of patent rights can be found in the PATENTS file in the same directory.
8+
*
9+
* @providesModule MouseMetrics
10+
*/
11+
12+
'use strict';
13+
14+
var MouseMetrics = {
15+
16+
previousScreenX: null,
17+
18+
previousScreenY: null,
19+
20+
setPreviousScreenX: function(value) {
21+
MouseMetrics.previousScreenX = value;
22+
},
23+
24+
setPreviousScreenY: function(value) {
25+
MouseMetrics.previousScreenY = value;
26+
},
27+
28+
};
29+
30+
module.exports = MouseMetrics;

0 commit comments

Comments
 (0)