diff --git a/chrome/content/zotero/xpcom/collectionTreeView.js b/chrome/content/zotero/xpcom/collectionTreeView.js index 1a58be527..1dd03e0ca 100644 --- a/chrome/content/zotero/xpcom/collectionTreeView.js +++ b/chrome/content/zotero/xpcom/collectionTreeView.js @@ -707,7 +707,7 @@ Zotero.CollectionTreeView.prototype.collapseLibrary = Zotero.Promise.coroutine(f //this._treebox.endUpdateBatch(); // Select the collapsed library - yield this.selectLibrary(selectedLibraryID); + this.selectLibrary(selectedLibraryID); }); @@ -746,7 +746,7 @@ Zotero.CollectionTreeView.prototype.expandToCollection = Zotero.Promise.coroutin /** * @param {Integer} libraryID Library to select */ -Zotero.CollectionTreeView.prototype.selectLibrary = Zotero.Promise.coroutine(function* (libraryID) { +Zotero.CollectionTreeView.prototype.selectLibrary = function (libraryID) { if (Zotero.suppressUIUpdates) { Zotero.debug("UI updates suppressed -- not changing library selection"); return false; @@ -779,7 +779,7 @@ Zotero.CollectionTreeView.prototype.selectLibrary = Zotero.Promise.coroutine(fun } return false; -}); +} Zotero.CollectionTreeView.prototype.selectTrash = function (libraryID) { diff --git a/chrome/content/zotero/zoteroPane.js b/chrome/content/zotero/zoteroPane.js index 98c88df3a..905c4d8d7 100644 --- a/chrome/content/zotero/zoteroPane.js +++ b/chrome/content/zotero/zoteroPane.js @@ -2014,19 +2014,7 @@ var ZoteroPane = new function() var self = this; var deferred = Zotero.Promise.defer(); this.collectionsView.addEventListener('load', function () { - Zotero.spawn(function* () { - var currentLibraryID = self.getSelectedLibraryID(); - // If in a different library - if (item.libraryID != currentLibraryID) { - Zotero.debug("Library ID differs; switching library"); - yield self.collectionsView.selectLibrary(item.libraryID); - } - // Force switch to library view - else if (!self.collectionsView.selectedTreeRow.isLibrary() && inLibrary) { - Zotero.debug("Told to select in library; switching to library"); - yield self.collectionsView.selectLibrary(item.libraryID); - } - + try { self.addEventListener('itemsLoaded', function () { Zotero.spawn(function* () { var selected = yield self.itemsView.selectItem(itemID, expand); @@ -2037,7 +2025,7 @@ var ZoteroPane = new function() } else { Zotero.debug("Item was not selected; switching to library"); - yield self.collectionsView.selectLibrary(item.libraryID); + self.collectionsView.selectLibrary(item.libraryID); } yield self.itemsView.selectItem(itemID, expand); } @@ -2047,10 +2035,22 @@ var ZoteroPane = new function() deferred.reject(e); }); }); - }) - .catch(function(e) { + + var currentLibraryID = self.getSelectedLibraryID(); + // If in a different library + if (item.libraryID != currentLibraryID) { + Zotero.debug("Library ID differs; switching library"); + self.collectionsView.selectLibrary(item.libraryID); + } + // Force switch to library view + else if (!self.collectionsView.selectedTreeRow.isLibrary() && inLibrary) { + Zotero.debug("Told to select in library; switching to library"); + self.collectionsView.selectLibrary(item.libraryID); + } + } + catch (e) { deferred.reject(e); - }); + } }); // open Zotero pane diff --git a/test/tests/collectionTreeViewTest.js b/test/tests/collectionTreeViewTest.js index 8fda530c6..7a72730d3 100644 --- a/test/tests/collectionTreeViewTest.js +++ b/test/tests/collectionTreeViewTest.js @@ -12,14 +12,14 @@ describe("Zotero.CollectionTreeView", function() { // Select library // TODO: Add a selectCollection() function and select a collection instead - var resetSelection = Zotero.Promise.coroutine(function* () { - yield collectionsView.selectLibrary(Zotero.Libraries.userLibraryID); + var resetSelection = function () { + collectionsView.selectLibrary(Zotero.Libraries.userLibraryID); assert.equal(collectionsView.getSelectedLibraryID(), Zotero.Libraries.userLibraryID); - }); + } describe("#notify()", function () { it("should select a new collection", function* () { - yield resetSelection(); + resetSelection(); // Create collection var collection = new Zotero.Collection; @@ -33,7 +33,7 @@ describe("Zotero.CollectionTreeView", function() { }); it("shouldn't select a new collection if skipNotifier is passed", function* () { - yield resetSelection(); + resetSelection(); // Create collection with skipNotifier flag var collection = new Zotero.Collection; @@ -47,7 +47,7 @@ describe("Zotero.CollectionTreeView", function() { }); it("shouldn't select a new collection if skipSelect is passed", function* () { - yield resetSelection(); + resetSelection(); // Create collection with skipSelect flag var collection = new Zotero.Collection; @@ -68,7 +68,7 @@ describe("Zotero.CollectionTreeView", function() { collection = yield Zotero.Collections.getAsync(id); yield Zotero.Promise.delay(100); - yield resetSelection(); + resetSelection(); collection.name = "No select on modify 2"; yield collection.save();