@@ -41,7 +41,8 @@ $.widget("ui.droppable", {
41
41
} ,
42
42
_create : function ( ) {
43
43
44
- var o = this . options ,
44
+ var proportions ,
45
+ o = this . options ,
45
46
accept = o . accept ;
46
47
47
48
this . isover = false ;
@@ -51,8 +52,20 @@ $.widget("ui.droppable", {
51
52
return d . is ( accept ) ;
52
53
} ;
53
54
54
- //Store the droppable's proportions
55
- this . proportions = { width : this . element [ 0 ] . offsetWidth , height : this . element [ 0 ] . offsetHeight } ;
55
+ this . proportions = function ( /* valueToWrite */ ) {
56
+ if ( arguments . length ) {
57
+ // Store the droppable's proportions
58
+ proportions = arguments [ 0 ] ;
59
+ } else {
60
+ // Retrieve or derive the droppable's proportions
61
+ return proportions ?
62
+ proportions :
63
+ proportions = {
64
+ width : this . element [ 0 ] . offsetWidth ,
65
+ height : this . element [ 0 ] . offsetHeight
66
+ } ;
67
+ }
68
+ } ;
56
69
57
70
// Add the reference and positions to the manager
58
71
$ . ui . ddmanager . droppables [ o . scope ] = $ . ui . ddmanager . droppables [ o . scope ] || [ ] ;
@@ -198,10 +211,14 @@ $.ui.intersect = function(draggable, droppable, toleranceMode) {
198
211
}
199
212
200
213
var draggableLeft , draggableTop ,
201
- x1 = ( draggable . positionAbs || draggable . position . absolute ) . left , x2 = x1 + draggable . helperProportions . width ,
202
- y1 = ( draggable . positionAbs || draggable . position . absolute ) . top , y2 = y1 + draggable . helperProportions . height ,
203
- l = droppable . offset . left , r = l + droppable . proportions . width ,
204
- t = droppable . offset . top , b = t + droppable . proportions . height ;
214
+ x1 = ( draggable . positionAbs || draggable . position . absolute ) . left ,
215
+ y1 = ( draggable . positionAbs || draggable . position . absolute ) . top ,
216
+ x2 = x1 + draggable . helperProportions . width ,
217
+ y2 = y1 + draggable . helperProportions . height ,
218
+ l = droppable . offset . left ,
219
+ t = droppable . offset . top ,
220
+ r = l + droppable . proportions ( ) . width ,
221
+ b = t + droppable . proportions ( ) . height ;
205
222
206
223
switch ( toleranceMode ) {
207
224
case "fit" :
@@ -214,7 +231,7 @@ $.ui.intersect = function(draggable, droppable, toleranceMode) {
214
231
case "pointer" :
215
232
draggableLeft = ( ( draggable . positionAbs || draggable . position . absolute ) . left + ( draggable . clickOffset || draggable . offset . click ) . left ) ;
216
233
draggableTop = ( ( draggable . positionAbs || draggable . position . absolute ) . top + ( draggable . clickOffset || draggable . offset . click ) . top ) ;
217
- return isOverAxis ( draggableTop , t , droppable . proportions . height ) && isOverAxis ( draggableLeft , l , droppable . proportions . width ) ;
234
+ return isOverAxis ( draggableTop , t , droppable . proportions ( ) . height ) && isOverAxis ( draggableLeft , l , droppable . proportions ( ) . width ) ;
218
235
case "touch" :
219
236
return (
220
237
( y1 >= t && y1 <= b ) || // Top edge touching
@@ -254,7 +271,7 @@ $.ui.ddmanager = {
254
271
// Filter out elements in the current dragged item
255
272
for ( j = 0 ; j < list . length ; j ++ ) {
256
273
if ( list [ j ] === m [ i ] . element [ 0 ] ) {
257
- m [ i ] . proportions . height = 0 ;
274
+ m [ i ] . proportions ( ) . height = 0 ;
258
275
continue droppablesLoop;
259
276
}
260
277
}
@@ -269,8 +286,8 @@ $.ui.ddmanager = {
269
286
m [ i ] . _activate . call ( m [ i ] , event ) ;
270
287
}
271
288
272
- m [ i ] . offset = m [ i ] . element . offset ( ) ;
273
- m [ i ] . proportions = { width : m [ i ] . element [ 0 ] . offsetWidth , height : m [ i ] . element [ 0 ] . offsetHeight } ;
289
+ m [ i ] . offset = m [ i ] . element . offset ( ) ;
290
+ m [ i ] . proportions ( { width : m [ i ] . element [ 0 ] . offsetWidth , height : m [ i ] . element [ 0 ] . offsetHeight } ) ;
274
291
275
292
}
276
293
0 commit comments