|
Packit |
1c1d7e |
/*!
|
|
Packit |
1c1d7e |
* jQuery UI Mouse 1.8.18
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
|
Packit |
1c1d7e |
* Dual licensed under the MIT or GPL Version 2 licenses.
|
|
Packit |
1c1d7e |
* http://jquery.org/license
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* http://docs.jquery.com/UI/Mouse
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Depends:
|
|
Packit |
1c1d7e |
* jquery.ui.widget.js
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
(function( $, undefined ) {
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
var mouseHandled = false;
|
|
Packit |
1c1d7e |
$( document ).mouseup( function( e ) {
|
|
Packit |
1c1d7e |
mouseHandled = false;
|
|
Packit |
1c1d7e |
});
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
$.widget("ui.mouse", {
|
|
Packit |
1c1d7e |
options: {
|
|
Packit |
1c1d7e |
cancel: ':input,option',
|
|
Packit |
1c1d7e |
distance: 1,
|
|
Packit |
1c1d7e |
delay: 0
|
|
Packit |
1c1d7e |
},
|
|
Packit |
1c1d7e |
_mouseInit: function() {
|
|
Packit |
1c1d7e |
var self = this;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
this.element
|
|
Packit |
1c1d7e |
.bind('mousedown.'+this.widgetName, function(event) {
|
|
Packit |
1c1d7e |
return self._mouseDown(event);
|
|
Packit |
1c1d7e |
})
|
|
Packit |
1c1d7e |
.bind('click.'+this.widgetName, function(event) {
|
|
Packit |
1c1d7e |
if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
|
|
Packit |
1c1d7e |
$.removeData(event.target, self.widgetName + '.preventClickEvent');
|
|
Packit |
1c1d7e |
event.stopImmediatePropagation();
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
});
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
this.started = false;
|
|
Packit |
1c1d7e |
},
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// TODO: make sure destroying one instance of mouse doesn't mess with
|
|
Packit |
1c1d7e |
// other instances of mouse
|
|
Packit |
1c1d7e |
_mouseDestroy: function() {
|
|
Packit |
1c1d7e |
this.element.unbind('.'+this.widgetName);
|
|
Packit |
1c1d7e |
},
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
_mouseDown: function(event) {
|
|
Packit |
1c1d7e |
// don't let more than one widget handle mouseStart
|
|
Packit |
1c1d7e |
if( mouseHandled ) { return };
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// we may have missed mouseup (out of window)
|
|
Packit |
1c1d7e |
(this._mouseStarted && this._mouseUp(event));
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
this._mouseDownEvent = event;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
var self = this,
|
|
Packit |
1c1d7e |
btnIsLeft = (event.which == 1),
|
|
Packit |
1c1d7e |
// event.target.nodeName works around a bug in IE 8 with
|
|
Packit |
1c1d7e |
// disabled inputs (#7620)
|
|
Packit |
1c1d7e |
elIsCancel = (typeof this.options.cancel == "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
|
|
Packit |
1c1d7e |
if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
this.mouseDelayMet = !this.options.delay;
|
|
Packit |
1c1d7e |
if (!this.mouseDelayMet) {
|
|
Packit |
1c1d7e |
this._mouseDelayTimer = setTimeout(function() {
|
|
Packit |
1c1d7e |
self.mouseDelayMet = true;
|
|
Packit |
1c1d7e |
}, this.options.delay);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
|
|
Packit |
1c1d7e |
this._mouseStarted = (this._mouseStart(event) !== false);
|
|
Packit |
1c1d7e |
if (!this._mouseStarted) {
|
|
Packit |
1c1d7e |
event.preventDefault();
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Click event may never have fired (Gecko & Opera)
|
|
Packit |
1c1d7e |
if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {
|
|
Packit |
1c1d7e |
$.removeData(event.target, this.widgetName + '.preventClickEvent');
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// these delegates are required to keep context
|
|
Packit |
1c1d7e |
this._mouseMoveDelegate = function(event) {
|
|
Packit |
1c1d7e |
return self._mouseMove(event);
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
this._mouseUpDelegate = function(event) {
|
|
Packit |
1c1d7e |
return self._mouseUp(event);
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
$(document)
|
|
Packit |
1c1d7e |
.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
|
|
Packit |
1c1d7e |
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
event.preventDefault();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
mouseHandled = true;
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
},
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
_mouseMove: function(event) {
|
|
Packit |
1c1d7e |
// IE mouseup check - mouseup happened when mouse was out of window
|
|
Packit |
1c1d7e |
if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
|
|
Packit |
1c1d7e |
return this._mouseUp(event);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (this._mouseStarted) {
|
|
Packit |
1c1d7e |
this._mouseDrag(event);
|
|
Packit |
1c1d7e |
return event.preventDefault();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
|
|
Packit |
1c1d7e |
this._mouseStarted =
|
|
Packit |
1c1d7e |
(this._mouseStart(this._mouseDownEvent, event) !== false);
|
|
Packit |
1c1d7e |
(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return !this._mouseStarted;
|
|
Packit |
1c1d7e |
},
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
_mouseUp: function(event) {
|
|
Packit |
1c1d7e |
$(document)
|
|
Packit |
1c1d7e |
.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
|
|
Packit |
1c1d7e |
.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (this._mouseStarted) {
|
|
Packit |
1c1d7e |
this._mouseStarted = false;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (event.target == this._mouseDownEvent.target) {
|
|
Packit |
1c1d7e |
$.data(event.target, this.widgetName + '.preventClickEvent', true);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
this._mouseStop(event);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
},
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
_mouseDistanceMet: function(event) {
|
|
Packit |
1c1d7e |
return (Math.max(
|
|
Packit |
1c1d7e |
Math.abs(this._mouseDownEvent.pageX - event.pageX),
|
|
Packit |
1c1d7e |
Math.abs(this._mouseDownEvent.pageY - event.pageY)
|
|
Packit |
1c1d7e |
) >= this.options.distance
|
|
Packit |
1c1d7e |
);
|
|
Packit |
1c1d7e |
},
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
_mouseDelayMet: function(event) {
|
|
Packit |
1c1d7e |
return this.mouseDelayMet;
|
|
Packit |
1c1d7e |
},
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// These are placeholder methods, to be overriden by extending plugin
|
|
Packit |
1c1d7e |
_mouseStart: function(event) {},
|
|
Packit |
1c1d7e |
_mouseDrag: function(event) {},
|
|
Packit |
1c1d7e |
_mouseStop: function(event) {},
|
|
Packit |
1c1d7e |
_mouseCapture: function(event) { return true; }
|
|
Packit |
1c1d7e |
});
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
})(jQuery);
|