summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Churchill <damoxc@gmail.com>2010-07-01 14:21:37 +0100
committerDamien Churchill <damoxc@gmail.com>2010-07-01 14:21:37 +0100
commit35128cf18f11f744ea736df48aa914445b0fbeac (patch)
treee665c888e125e194dd36a9647c336bbdfd06eb06
parent6ff1da2391473b7109e2ada73cdf39f21257b169 (diff)
downloaddeluge-35128cf18f11f744ea736df48aa914445b0fbeac.tar.gz
deluge-35128cf18f11f744ea736df48aa914445b0fbeac.tar.bz2
deluge-35128cf18f11f744ea736df48aa914445b0fbeac.zip
more improvements to the shift select
-rw-r--r--deluge/ui/web/js/ext-extensions/tree/MultiSelectionModelFix.js23
1 files changed, 22 insertions, 1 deletions
diff --git a/deluge/ui/web/js/ext-extensions/tree/MultiSelectionModelFix.js b/deluge/ui/web/js/ext-extensions/tree/MultiSelectionModelFix.js
index d699cce5b..943cd9cec 100644
--- a/deluge/ui/web/js/ext-extensions/tree/MultiSelectionModelFix.js
+++ b/deluge/ui/web/js/ext-extensions/tree/MultiSelectionModelFix.js
@@ -48,6 +48,9 @@ Ext.override(Ext.tree.MultiSelectionModel, {
var fi = parentNode.indexOf(node),
li = parentNode.indexOf(this.lastSelNode);
+ // Select the last clicked node and wipe old selections
+ this.select(this.lastSelNode, e, false, true);
+
// Swap the values if required
if (fi > li) {
fi = fi + li, li = fi - li, fi = fi - li;
@@ -57,7 +60,7 @@ Ext.override(Ext.tree.MultiSelectionModel, {
parentNode.eachChild(function(n) {
var i = parentNode.indexOf(n);
if (fi < i && i < li) {
- this.select(n, e, true);
+ this.select(n, e, true, true);
}
}, this);
@@ -66,6 +69,24 @@ Ext.override(Ext.tree.MultiSelectionModel, {
} else {
this.select(node, e, e.ctrlKey);
}
+ },
+
+ select: function(node, e, keepExisting, suppressEvent) {
+ if(keepExisting !== true){
+ this.clearSelections(true);
+ }
+ if(this.isSelected(node)){
+ this.lastSelNode = node;
+ return node;
+ }
+ this.selNodes.push(node);
+ this.selMap[node.id] = node;
+ this.lastSelNode = node;
+ node.ui.onSelectedChange(true);
+ if (suppressEvent !== true) {
+ this.fireEvent('selectionchange', this, this.selNodes);
+ }
+ return node;
}
})