Blame | Last modification | View Log | RSS feed
/*!* jQuery UI Mouse 1.8.5** Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)* Dual licensed under the MIT or GPL Version 2 licenses.* http://jquery.org/license** http://docs.jquery.com/UI/Mouse** Depends:* jquery.ui.widget.js*/(function( $, undefined ) {$.widget("ui.mouse", {options: {cancel: ':input,option',distance: 1,delay: 0},_mouseInit: function() {var self = this;this.element.bind('mousedown.'+this.widgetName, function(event) {return self._mouseDown(event);}).bind('click.'+this.widgetName, function(event) {if(self._preventClickEvent) {self._preventClickEvent = false;event.stopImmediatePropagation();return false;}});this.started = false;},// TODO: make sure destroying one instance of mouse doesn't mess with// other instances of mouse_mouseDestroy: function() {this.element.unbind('.'+this.widgetName);},_mouseDown: function(event) {// don't let more than one widget handle mouseStart// TODO: figure out why we have to use originalEventevent.originalEvent = event.originalEvent || {};if (event.originalEvent.mouseHandled) { return; }// we may have missed mouseup (out of window)(this._mouseStarted && this._mouseUp(event));this._mouseDownEvent = event;var self = this,btnIsLeft = (event.which == 1),elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {return true;}this.mouseDelayMet = !this.options.delay;if (!this.mouseDelayMet) {this._mouseDelayTimer = setTimeout(function() {self.mouseDelayMet = true;}, this.options.delay);}if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {this._mouseStarted = (this._mouseStart(event) !== false);if (!this._mouseStarted) {event.preventDefault();return true;}}// these delegates are required to keep contextthis._mouseMoveDelegate = function(event) {return self._mouseMove(event);};this._mouseUpDelegate = function(event) {return self._mouseUp(event);};$(document).bind('mousemove.'+this.widgetName, this._mouseMoveDelegate).bind('mouseup.'+this.widgetName, this._mouseUpDelegate);// preventDefault() is used to prevent the selection of text here -// however, in Safari, this causes select boxes not to be selectable// anymore, so this fix is needed($.browser.safari || event.preventDefault());event.originalEvent.mouseHandled = true;return true;},_mouseMove: function(event) {// IE mouseup check - mouseup happened when mouse was out of windowif ($.browser.msie && !event.button) {return this._mouseUp(event);}if (this._mouseStarted) {this._mouseDrag(event);return event.preventDefault();}if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {this._mouseStarted =(this._mouseStart(this._mouseDownEvent, event) !== false);(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));}return !this._mouseStarted;},_mouseUp: function(event) {$(document).unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate).unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);if (this._mouseStarted) {this._mouseStarted = false;this._preventClickEvent = (event.target == this._mouseDownEvent.target);this._mouseStop(event);}return false;},_mouseDistanceMet: function(event) {return (Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX),Math.abs(this._mouseDownEvent.pageY - event.pageY)) >= this.options.distance);},_mouseDelayMet: function(event) {return this.mouseDelayMet;},// These are placeholder methods, to be overriden by extending plugin_mouseStart: function(event) {},_mouseDrag: function(event) {},_mouseStop: function(event) {},_mouseCapture: function(event) { return true; }});})(jQuery);