1
0
mirror of synced 2024-11-22 13:06:08 +03:00

restore smooth scrolling by fixing mouseevent-filtered

This commit is contained in:
Igor Vaynberg 2012-06-17 00:45:44 -07:00
parent aba23fc3e7
commit b825d8ec41

View File

@ -154,6 +154,10 @@
}); });
} }
$(document).delegate("*", "mousemove", function (e) {
$(document).data("select2-lastpos", {x: e.pageX, y: e.pageY});
});
/** /**
* filters mouse events so an event is fired only if the mouse moved. * filters mouse events so an event is fired only if the mouse moved.
* *
@ -161,12 +165,8 @@
* the elements under the pointer are scrolled. * the elements under the pointer are scrolled.
*/ */
function installFilteredMouseMove(element) { function installFilteredMouseMove(element) {
var context = $(element[0].document); element.bind("mousemove", function (e) {
context.on("mousemove", function (e) { var lastpos = $(document).data("select2-lastpos");
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) { if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {
$(e.target).trigger("mousemove-filtered", e); $(e.target).trigger("mousemove-filtered", e);
} }
@ -422,8 +422,8 @@
// initialize the container // initialize the container
this.initContainer(); this.initContainer();
//installFilteredMouseMove(this.results); installFilteredMouseMove(this.results);
this.dropdown.delegate(resultsSelector, "mouseover", this.bind(this.highlightUnderEvent)); this.dropdown.delegate(resultsSelector, "mousemove-filtered", this.bind(this.highlightUnderEvent));
installDebouncedScroll(80, this.results); installDebouncedScroll(80, this.results);
this.dropdown.delegate(resultsSelector, "scroll-debounced", this.bind(this.loadMoreIfNeeded)); this.dropdown.delegate(resultsSelector, "scroll-debounced", this.bind(this.loadMoreIfNeeded));