Skip to content

Commit

Permalink
Add support for movementX/Y in SyntheticMouseEvent
Browse files Browse the repository at this point in the history
Register screenX/Y after calculating values

Fix movementY variable name error

Linting fix

Return 0 in instanes where previous values are null
  • Loading branch information
Brandon Dail authored and Brandon Dail committed May 8, 2016
1 parent 9ddf9e1 commit d95c545
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/renderers/dom/client/syntheticEvents/SyntheticMouseEvent.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

var SyntheticUIEvent = require('SyntheticUIEvent');
var ViewportMetrics = require('ViewportMetrics');
var MouseMetrics = require('MouseMetrics');

var getEventModifierState = require('getEventModifierState');

Expand Down Expand Up @@ -63,6 +64,28 @@ var MouseEventInterface = {
event.pageY :
event.clientY + ViewportMetrics.currentScrollTop;
},
movementX: function(event) {
if ('movementX' in event) {
return event.movementX;
}
var previousScreenX = MouseMetrics.previousScreenX;
MouseMetrics.setPreviousScreenX(event.screenX);
if (previousScreenX === null) {
return 0;
}
return event.screenX - previousScreenX;
},
movementY: function(event) {
if ('movementY' in event) {
return event.movementY;
}
var previousScreenY = MouseMetrics.previousScreenY;
MouseMetrics.setPreviousScreenY(event.screenY);
if (previousScreenY === null) {
return 0;
}
return event.screenY - previousScreenY;
},
};

/**
Expand Down
30 changes: 30 additions & 0 deletions src/renderers/dom/client/utils/MouseMetrics.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule MouseMetrics
*/

'use strict';

var MouseMetrics = {

previousScreenX: null,

previousScreenY: null,

setPreviousScreenX: function(value) {
MouseMetrics.previousScreenX = value;
},

setPreviousScreenY: function(value) {
MouseMetrics.previousScreenY = value;
},

};

module.exports = MouseMetrics;

0 comments on commit d95c545

Please sign in to comment.