From 570ba2c909ad5727994277a3c45b9da616c20606 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Wed, 5 Oct 2011 17:40:46 +0000 Subject: [PATCH] - Restrict "-" and "+" in source list to current library - Properly collapse subcollections on "-" - Retain selection after "+" and select library root after "-" --- .../zotero/xpcom/collectionTreeView.js | 106 +++++++++++++----- 1 file changed, 80 insertions(+), 26 deletions(-) diff --git a/chrome/content/zotero/xpcom/collectionTreeView.js b/chrome/content/zotero/xpcom/collectionTreeView.js index e281dbbd6..605c686b4 100644 --- a/chrome/content/zotero/xpcom/collectionTreeView.js +++ b/chrome/content/zotero/xpcom/collectionTreeView.js @@ -59,19 +59,19 @@ Zotero.CollectionTreeView.prototype.setTree = function(treebox) this._treebox = treebox; // Add a keypress listener for expand/collapse - var expandAllRows = this.expandAllRows; - var collapseAllRows = this.collapseAllRows; var tree = this._treebox.treeBody.parentNode; + var self = this; + tree.addEventListener('keypress', function(event) { var key = String.fromCharCode(event.which); if (key == '+' && !(event.ctrlKey || event.altKey || event.metaKey)) { - expandAllRows(treebox); + self.expandLibrary(self); return; } else if (key == '-' && !(event.shiftKey || event.ctrlKey || event.altKey || event.metaKey)) { - collapseAllRows(treebox); + self.collapseLibrary(self); return; } }, false); @@ -584,15 +584,68 @@ Zotero.CollectionTreeView.prototype.__defineGetter__('editable', function () { }); -Zotero.CollectionTreeView.prototype.expandAllRows = function(treebox) { - var view = treebox.view; - treebox.beginUpdateBatch(); - for (var i=0; i=0; i--) { + if (self._getItemAtRow(i).ref.libraryID !== selectedLibraryID) { + // Once we've moved beyond the original library, stop looking + if (found) { + break; + } + continue; + } + + found = true; + + if (self.isContainer(i) && self.isContainerOpen(i)) { + self.toggleOpenState(i); + } + } + + self._treebox.endUpdateBatch(); + + // Select the collapsed library + self.selectLibrary(selectedLibraryID); } @@ -622,17 +675,6 @@ Zotero.CollectionTreeView.prototype.expandToCollection = function(collectionID) } -Zotero.CollectionTreeView.prototype.collapseAllRows = function(treebox) { - var view = treebox.view; - treebox.beginUpdateBatch(); - for (var i=0; i 0