aboutsummaryrefslogtreecommitdiffstats
path: root/ui/ui.sortable.js
diff options
context:
space:
mode:
authorPaul Bakaus <paul.bakaus@googlemail.com>2008-06-24 15:28:12 +0000
committerPaul Bakaus <paul.bakaus@googlemail.com>2008-06-24 15:28:12 +0000
commit4f33a5b3b2612a5796a58ba552a67bee99da06d7 (patch)
tree439d9e5533b38ad304d2aaebb33b76a30e45f4b7 /ui/ui.sortable.js
parent17115b6b071c1a60920491da4f36c4005d30cce0 (diff)
downloadjquery-ui-4f33a5b3b2612a5796a58ba552a67bee99da06d7.tar.gz
jquery-ui-4f33a5b3b2612a5796a58ba552a67bee99da06d7.zip
sortable: connected lists items are not refreshed until you actually move into the connected list - this improves performance for connected lists
Diffstat (limited to 'ui/ui.sortable.js')
-rw-r--r--ui/ui.sortable.js22
1 files changed, 16 insertions, 6 deletions
diff --git a/ui/ui.sortable.js b/ui/ui.sortable.js
index 8d5c67c4b..ccd987e33 100644
--- a/ui/ui.sortable.js
+++ b/ui/ui.sortable.js
@@ -172,6 +172,7 @@ $.widget("ui.sortable", $.extend($.ui.mouse, {
$.data(this, 'sortable-item', queries[i][1]); // Data for target checking (mouse manager)
items.push({
item: $(this),
+ instance: queries[i][1],
width: 0, height: 0,
left: 0, top: 0
});
@@ -190,14 +191,23 @@ $.widget("ui.sortable", $.extend($.ui.mouse, {
};
}
- for (var i = this.items.length - 1; i >= 0; i--){
+ for (var i = this.items.length - 1; i >= 0; i--){
+
+ //We ignore calculating positions of all connected containers when we're not over them
+ if(this.items[i].instance != this.currentContainer && this.currentContainer && this.items[i].item[0] != this.currentItem[0])
+ continue;
+
var t = this.items[i].item;
+
if(!fast) this.items[i].width = (this.options.toleranceElement ? $(this.options.toleranceElement, t) : t).outerWidth();
if(!fast) this.items[i].height = (this.options.toleranceElement ? $(this.options.toleranceElement, t) : t).outerHeight();
+
var p = (this.options.toleranceElement ? $(this.options.toleranceElement, t) : t).offset();
this.items[i].left = p.left;
this.items[i].top = p.top;
+
};
+
for (var i = this.containers.length - 1; i >= 0; i--){
var p =this.containers[i].element.offset();
this.containers[i].containerCache.left = p.left;
@@ -205,6 +215,7 @@ $.widget("ui.sortable", $.extend($.ui.mouse, {
this.containers[i].containerCache.width = this.containers[i].element.outerWidth();
this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
};
+
},
destroy: function() {
this.element
@@ -265,11 +276,10 @@ $.widget("ui.sortable", $.extend($.ui.mouse, {
this.placeholder = null;;
}
-
- itemWithLeastDistance ? this.rearrange(e, itemWithLeastDistance) : this.rearrange(e, null, this.containers[i].element);
+ this.currentContainer = this.containers[i];
+ itemWithLeastDistance ? this.rearrange(e, itemWithLeastDistance, null, true) : this.rearrange(e, null, this.containers[i].element, true);
this.propagate("change", e); //Call plugins and callbacks
this.containers[i].propagate("change", e, this); //Call plugins and callbacks
- this.currentContainer = this.containers[i];
}
@@ -518,9 +528,9 @@ $.widget("ui.sortable", $.extend($.ui.mouse, {
return false;
},
- rearrange: function(e, i, a) {
+ rearrange: function(e, i, a, hardRefresh) {
a ? a.append(this.currentItem) : i.item[this.direction == 'down' ? 'before' : 'after'](this.currentItem);
- this.refreshPositions(true); //Precompute after each DOM insertion, NOT on mousemove
+ this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
if(this.options.placeholder) this.options.placeholder.update.call(this.element, this.currentItem, this.placeholder);
},
mouseStop: function(e, noPropagation) {