Skip to content
Permalink
Browse files

sortable: important restructuring in the sort function - callback and…

… droppables/intersection now receive proper position information (also fixes #3022)
  • Loading branch information
Paul Bakaus
Paul Bakaus committed Jun 30, 2008
1 parent 75b29b6 commit 1b8cc8497846f942866401f0411fabd63761ac98
Showing with 24 additions and 7 deletions.
  1. +24 −7 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);

0 comments on commit 1b8cc84

Please sign in to comment.
You can’t perform that action at this time.