aboutsummaryrefslogtreecommitdiffstats
path: root/ui/ui.sortable.js
diff options
context:
space:
mode:
authorPaul Bakaus <paul.bakaus@googlemail.com>2008-06-30 14:08:06 +0000
committerPaul Bakaus <paul.bakaus@googlemail.com>2008-06-30 14:08:06 +0000
commit1b8cc8497846f942866401f0411fabd63761ac98 (patch)
tree0475d0122851d7489c9a23d748077f8f26125359 /ui/ui.sortable.js
parent75b29b66df66a92cc90b3f5079840cbf147f59d6 (diff)
downloadjquery-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.js31
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);