]> source.dussan.org Git - jquery-ui.git/commitdiff
sortable: important restructuring in the sort function - callback and droppables...
authorPaul Bakaus <paul.bakaus@googlemail.com>
Mon, 30 Jun 2008 14:08:06 +0000 (14:08 +0000)
committerPaul Bakaus <paul.bakaus@googlemail.com>
Mon, 30 Jun 2008 14:08:06 +0000 (14:08 +0000)
ui/ui.sortable.js

index 92f4a997e31390dce7113137ca8cb0fc179d4b27..1503c60d3fe76743d4ac8b0041644f459c46722a 100644 (file)
@@ -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);