From 82a4f9c3664056aca276c0839fb42db5670217e0 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 4 Jun 2013 18:33:23 -0700 Subject: [PATCH] Avoid duplicate hover events --- js/id/behavior/hover.js | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/js/id/behavior/hover.js b/js/id/behavior/hover.js index 2ddb2eaf7..fd2209d56 100644 --- a/js/id/behavior/hover.js +++ b/js/id/behavior/hover.js @@ -34,8 +34,15 @@ iD.behavior.Hover = function(context) { var hover = function(__) { selection = __; - function mouseover() { - target = d3.event.target.__data__; + function enter(d) { + if (d === target) return; + + target = d; + + selection.selectAll('.hover') + .classed('hover', false); + selection.selectAll('.hover-suppressed') + .classed('hover-suppressed', false); if (target && target.type) { var selector = '.' + target.id; @@ -52,17 +59,19 @@ iD.behavior.Hover = function(context) { .classed(suppressed ? 'hover-suppressed' : 'hover', true); dispatch.hover(target.id); + } else { + dispatch.hover(null); } } - function mouseout() { - dispatch.hover(null); - target = null; + function mouseover() { + var target = d3.event.target; + enter(target ? target.__data__ : null); + } - selection.selectAll('.hover') - .classed('hover', false); - selection.selectAll('.hover-suppressed') - .classed('hover-suppressed', false); + function mouseout() { + var target = d3.event.relatedTarget; + enter(target ? target.__data__ : null); } selection