diff options
author | Paul Bakaus <paul.bakaus@googlemail.com> | 2008-06-30 14:08:06 +0000 |
---|---|---|
committer | Paul Bakaus <paul.bakaus@googlemail.com> | 2008-06-30 14:08:06 +0000 |
commit | 1b8cc8497846f942866401f0411fabd63761ac98 (patch) | |
tree | 0475d0122851d7489c9a23d748077f8f26125359 /ui/ui.sortable.js | |
parent | 75b29b66df66a92cc90b3f5079840cbf147f59d6 (diff) | |
download | jquery-ui-1b8cc8497846f942866401f0411fabd63761ac98.tar.gz jquery-ui-1b8cc8497846f942866401f0411fabd63761ac98.zip |
sortable: important restructuring in the sort function - callback and droppables/intersection now receive proper position information (also fixes #3022)
Diffstat (limited to 'ui/ui.sortable.js')
-rw-r--r-- | ui/ui.sortable.js | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/ui/ui.sortable.js b/ui/ui.sortable.js index 92f4a997e..1503c60d3 100644 --- a/ui/ui.sortable.js +++ b/ui/ui.sortable.js @@ -494,11 +494,20 @@ $.widget("ui.sortable", $.extend($.ui.mouse, { }, mouseDrag: function(e) { - //Compute the helpers position this.position = this.generatePosition(e); this.positionAbs = this.convertPositionTo("absolute"); + //Call the internal plugins + $.ui.plugin.call(this, "sort", [e, this.ui()]); + + //Regenerate the absolute position used for position checks + this.positionAbs = this.convertPositionTo("absolute"); + + //Set the helper's position + this.helper[0].style.left = this.position.left+'px'; + this.helper[0].style.top = this.position.top+'px'; + //Rearrange for (var i = this.items.length - 1; i >= 0; i--) { var intersection = this.intersectsWithEdge(this.items[i]); @@ -520,15 +529,12 @@ $.widget("ui.sortable", $.extend($.ui.mouse, { //Post events to containers this.contactContainers(e); - //Call plugins and callbacks - this.propagate("sort", e); - - if(!this.options.axis || this.options.axis == "x") this.helper[0].style.left = this.position.left+'px'; - if(!this.options.axis || this.options.axis == "y") this.helper[0].style.top = this.position.top+'px'; - //Interconnect with droppables if($.ui.ddmanager) $.ui.ddmanager.drag(this, e); + //Call callbacks + this.element.triggerHandler("sort", [e, this.ui()], this.options["sort"]); + return false; }, @@ -719,4 +725,15 @@ $.ui.plugin.add("sortable", "scroll", { } }); +$.ui.plugin.add("sortable", "axis", { + sort: function(e, ui) { + + var i = $(this).data("sortable"); + + if(ui.options.axis == "y") i.position.left = i.originalPosition.left; + if(ui.options.axis == "x") i.position.top = i.originalPosition.top; + + } +}); + })(jQuery); |