Skip to content

Commit

Permalink
adding mouseMetrics to keep track of mousemovements
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonwilliams authored and Jason Williams committed Feb 16, 2017
1 parent d20dea1 commit bdeee63
Show file tree
Hide file tree
Showing 4 changed files with 184 additions and 133 deletions.
2 changes: 2 additions & 0 deletions docs/docs/reference-events.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,8 @@ number clientY
boolean ctrlKey
boolean getModifierState(key)
boolean metaKey
number movementX
number movementY
number pageX
number pageY
DOMEventTarget relatedTarget
Expand Down
20 changes: 20 additions & 0 deletions src/renderers/dom/shared/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 All @@ -29,6 +30,25 @@ var MouseEventInterface = {
shiftKey: null,
altKey: null,
metaKey: null,
movementX: function(event) {
if ('movementX' in event) {
return event.movementX;
}

var previousScreenX = MouseMetrics.previousScreenX;
MouseMetrics.setPreviousScreenX(event.screenX);
return (previousScreenX) ? event.screenX - previousScreenX : 0;

},
movementY: function(event) {
if ('movementY' in event) {
return event.movementY;
}

var previousScreenY = MouseMetrics.previousScreenY;
MouseMetrics.setPreviousScreenY(event.screenY);
return previousScreenY ? event.screenY - previousScreenY : 0;
},
getModifierState: getEventModifierState,
button: function(event) {
// Webkit, Firefox, IE9+
Expand Down
30 changes: 30 additions & 0 deletions src/renderers/dom/shared/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;
Loading

0 comments on commit bdeee63

Please sign in to comment.