aboutsummaryrefslogtreecommitdiffstats
path: root/ui/jquery.ui.droppable.js
diff options
context:
space:
mode:
authorFelix Nagel <info@felixnagel.com>2013-11-13 19:45:56 +0100
committerFelix Nagel <info@felixnagel.com>2013-11-13 19:45:56 +0100
commitab2219b6ac3dbab58885a0bd2aaac01c4bcc1c2f (patch)
treededf39afe3330bae4eec603297432d972e5bcfc1 /ui/jquery.ui.droppable.js
parenta6c5f58d8243b39c6cd57b76ffb0776adfcc8b1c (diff)
parent14782c04e2201c53e3ecb80b086f1a4c27aa991d (diff)
downloadjquery-ui-ab2219b6ac3dbab58885a0bd2aaac01c4bcc1c2f.tar.gz
jquery-ui-ab2219b6ac3dbab58885a0bd2aaac01c4bcc1c2f.zip
Merge branch 'master' into selectmenu
Diffstat (limited to 'ui/jquery.ui.droppable.js')
-rw-r--r--ui/jquery.ui.droppable.js69
1 files changed, 42 insertions, 27 deletions
diff --git a/ui/jquery.ui.droppable.js b/ui/jquery.ui.droppable.js
index a51c3a335..0e4b65cc4 100644
--- a/ui/jquery.ui.droppable.js
+++ b/ui/jquery.ui.droppable.js
@@ -16,10 +16,6 @@
*/
(function( $, undefined ) {
-function isOverAxis( x, reference, size ) {
- return ( x >= reference ) && ( x < ( reference + size ) );
-}
-
$.widget( "ui.droppable", {
version: "@VERSION",
widgetEventPrefix: "drop",
@@ -67,23 +63,31 @@ $.widget( "ui.droppable", {
}
};
- // Add the reference and positions to the manager
- $.ui.ddmanager.droppables[ o.scope ] = $.ui.ddmanager.droppables[ o.scope ] || [];
- $.ui.ddmanager.droppables[ o.scope ].push( this );
+ this._addToManager( o.scope );
o.addClasses && this.element.addClass( "ui-droppable" );
},
- _destroy: function() {
- var i = 0,
- drop = $.ui.ddmanager.droppables[ this.options.scope ];
+ _addToManager: function( scope ) {
+ // Add the reference and positions to the manager
+ $.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
+ $.ui.ddmanager.droppables[ scope ].push( this );
+ },
+ _splice: function( drop ) {
+ var i = 0;
for ( ; i < drop.length; i++ ) {
if ( drop[ i ] === this ) {
drop.splice( i, 1 );
}
}
+ },
+
+ _destroy: function() {
+ var drop = $.ui.ddmanager.droppables[ this.options.scope ];
+
+ this._splice( drop );
this.element.removeClass( "ui-droppable ui-droppable-disabled" );
},
@@ -94,7 +98,13 @@ $.widget( "ui.droppable", {
this.accept = $.isFunction( value ) ? value : function( d ) {
return d.is( value );
};
+ } else if ( key === "scope" ) {
+ var drop = $.ui.ddmanager.droppables[ this.options.scope ];
+
+ this._splice( drop );
+ this._addToManager( value );
}
+
this._super( key, value );
},
@@ -204,23 +214,28 @@ $.widget( "ui.droppable", {
});
-$.ui.intersect = function( draggable, droppable, toleranceMode ) {
-
- if ( !droppable.offset ) {
- return false;
+$.ui.intersect = (function() {
+ function isOverAxis( x, reference, size ) {
+ return ( x >= reference ) && ( x < ( reference + size ) );
}
- var draggableLeft, draggableTop,
- x1 = ( draggable.positionAbs || draggable.position.absolute ).left,
- y1 = ( draggable.positionAbs || draggable.position.absolute ).top,
- x2 = x1 + draggable.helperProportions.width,
- y2 = y1 + draggable.helperProportions.height,
- l = droppable.offset.left,
- t = droppable.offset.top,
- r = l + droppable.proportions().width,
- b = t + droppable.proportions().height;
-
- switch ( toleranceMode ) {
+ return function( draggable, droppable, toleranceMode ) {
+
+ if ( !droppable.offset ) {
+ return false;
+ }
+
+ var draggableLeft, draggableTop,
+ x1 = ( draggable.positionAbs || draggable.position.absolute ).left,
+ y1 = ( draggable.positionAbs || draggable.position.absolute ).top,
+ x2 = x1 + draggable.helperProportions.width,
+ y2 = y1 + draggable.helperProportions.height,
+ l = droppable.offset.left,
+ t = droppable.offset.top,
+ r = l + droppable.proportions().width,
+ b = t + droppable.proportions().height;
+
+ switch ( toleranceMode ) {
case "fit":
return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
case "intersect":
@@ -245,8 +260,8 @@ $.ui.intersect = function( draggable, droppable, toleranceMode ) {
default:
return false;
}
-
-};
+ };
+})();
/*
This manager tracks offsets of draggables and droppables