Search and Top Navigation
Ticket #4977: droppable_pointer_fix.patch
File droppable_pointer_fix.patch, 2.5 KB (added by kevin.wells, November 25, 2009 02:22AM UTC)
Index: jquery.ui.droppable.js
===================================================================
--- jquery.ui.droppable.js (revision 3476)
+++ jquery.ui.droppable.js (working copy)
@@ -108,7 +108,7 @@
&& !inst.options.disabled
&& inst.options.scope == draggable.options.scope
&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))
- && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
+ && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance, event)
) { childrenIntersection = true; return false; }
});
if(childrenIntersection) return false;
@@ -149,7 +149,7 @@
}
});
-$.ui.intersect = function(draggable, droppable, toleranceMode) {
+$.ui.intersect = function(draggable, droppable, toleranceMode, event) {
if (!droppable.offset) return false;
@@ -170,8 +170,8 @@
&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
break;
case 'pointer':
- var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),
- draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),
+ var draggableLeft = event.pageX,
+ draggableTop = event.pageY,
isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);
return isOver;
break;
@@ -225,7 +225,7 @@
$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
if(!this.options) return;
- if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))
+ if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance, event))
dropped = this._drop.call(this, event);
if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
@@ -246,7 +246,7 @@
$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
if(this.options.disabled || this.greedyChild || !this.visible) return;
- var intersects = $.ui.intersect(draggable, this, this.options.tolerance);
+ var intersects = $.ui.intersect(draggable, this, this.options.tolerance, event);
var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);
if(!c) return;
Download in other formats:
Original Format
File droppable_pointer_fix.patch, 2.5 KB (added by kevin.wells, November 25, 2009 02:22AM UTC)
Index: jquery.ui.droppable.js
===================================================================
--- jquery.ui.droppable.js (revision 3476)
+++ jquery.ui.droppable.js (working copy)
@@ -108,7 +108,7 @@
&& !inst.options.disabled
&& inst.options.scope == draggable.options.scope
&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))
- && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
+ && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance, event)
) { childrenIntersection = true; return false; }
});
if(childrenIntersection) return false;
@@ -149,7 +149,7 @@
}
});
-$.ui.intersect = function(draggable, droppable, toleranceMode) {
+$.ui.intersect = function(draggable, droppable, toleranceMode, event) {
if (!droppable.offset) return false;
@@ -170,8 +170,8 @@
&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
break;
case 'pointer':
- var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),
- draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),
+ var draggableLeft = event.pageX,
+ draggableTop = event.pageY,
isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);
return isOver;
break;
@@ -225,7 +225,7 @@
$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
if(!this.options) return;
- if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))
+ if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance, event))
dropped = this._drop.call(this, event);
if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
@@ -246,7 +246,7 @@
$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
if(this.options.disabled || this.greedyChild || !this.visible) return;
- var intersects = $.ui.intersect(draggable, this, this.options.tolerance);
+ var intersects = $.ui.intersect(draggable, this, this.options.tolerance, event);
var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);
if(!c) return;