diff --git a/select2.js b/select2.js index fe8352d6..e41995e9 100755 --- a/select2.js +++ b/select2.js @@ -154,7 +154,26 @@ }); } - /** + /** + * filters mouse events so an event is fired only if the mouse moved. + * + * filters out mouse events that occur when mouse is stationary but + * the elements under the pointer are scrolled. + */ + function installFilteredMouseMove(element) { + var context = $(element[0].document); + context.on("mousemove", function (e) { + context.data("select2-lastpos", {x: e.pageX, y: e.pageY}); + }); + element.bind("mousemove", function (e) { + var lastpos = context.data("select2-lastpos"); + if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) { + $(e.target).trigger("mousemove-filtered", e); + } + }); + } + + /** * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made * within the last quietMillis milliseconds. * @@ -403,6 +422,7 @@ // initialize the container this.initContainer(); + //installFilteredMouseMove(this.results); this.dropdown.delegate(resultsSelector, "mouseover", this.bind(this.highlightUnderEvent)); installDebouncedScroll(80, this.results);