Skip to content

Commit

Permalink
Deduplicate track/untrack document event listener logic
Browse files Browse the repository at this point in the history
  • Loading branch information
dfreedm committed Jul 29, 2015
1 parent bbc3b57 commit 53037d4
Showing 1 changed file with 20 additions and 32 deletions.
52 changes: 20 additions & 32 deletions src/standard/gestures.html
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,18 @@
return ta;
}

function trackDocument(stateObj, movefn, upfn) {
stateObj.movefn = movefn;
stateObj.upfn = upfn;
document.addEventListener('mousemove', movefn);
document.addEventListener('mouseup', upfn);
}

function untrackDocument(stateObj) {
document.removeEventListener('mousemove', stateObj.movefn);
document.removeEventListener('mouseup', stateObj.upfn);
}

var Gestures = {
gestures: {},
recognizers: [],
Expand Down Expand Up @@ -381,19 +393,7 @@
},

reset: function() {
this.untrackDocument();
},

trackDocument: function(movefn, upfn) {
this.info.movefn = movefn;
this.info.upfn = upfn;
document.addEventListener('mousemove', movefn);
document.addEventListener('mouseup', upfn);
},

untrackDocument: function() {
document.removeEventListener('mousemove', this.info.movefn);
document.removeEventListener('mouseup', this.info.upfn);
untrackDocument(this.info);
},

mousedown: function(e) {
Expand All @@ -405,16 +405,16 @@
var movefn = function movefn(e) {
if (!hasLeftMouseButton(e)) {
self.fire('up', t, e);
self.untrackDocument();
untrackDocument(self.info);
}
};
var upfn = function upfn(e) {
if (hasLeftMouseButton(e)) {
self.fire('up', t, e);
}
self.untrackDocument();
untrackDocument(self.info);
};
this.trackDocument(movefn, upfn);
trackDocument(this.info, movefn, upfn);
this.fire('down', t, e);
},
touchstart: function(e) {
Expand Down Expand Up @@ -461,26 +461,14 @@
prevent: false
},

trackDocument: function(movefn, upfn) {
this.info.movefn = movefn;
this.info.upfn = upfn;
document.addEventListener('mousemove', movefn);
document.addEventListener('mouseup', upfn);
},

untrackDocument: function() {
document.removeEventListener('mousemove', this.info.movefn);
document.removeEventListener('mouseup', this.info.upfn);
},

reset: function() {
this.info.state = 'start';
this.info.started = false;
this.info.moves = [];
this.info.x = 0;
this.info.y = 0;
this.info.prevent = false;
this.untrackDocument();
untrackDocument(this.info);
},

hasMovedEnough: function(x, y) {
Expand Down Expand Up @@ -510,7 +498,7 @@
if (!hasLeftMouseButton(e)) {
// always fire "end"
self.info.state = 'end';
self.untrackDocument();
untrackDocument(self.info);
}
self.fire(t, e);
self.info.started = true;
Expand All @@ -523,10 +511,10 @@
}

// remove the temporary listeners
self.untrackDocument();
untrackDocument(self.info);
};
// add temporary document listeners as mouse retargets
this.trackDocument(movefn, upfn);
trackDocument(this.info, movefn, upfn);
this.info.x = e.clientX;
this.info.y = e.clientY;
},
Expand Down

0 comments on commit 53037d4

Please sign in to comment.