diff --git a/chrome/content/zotero/xpcom/collectionTreeView.js b/chrome/content/zotero/xpcom/collectionTreeView.js index 5e6e9b5554..7e0ab765b9 100644 --- a/chrome/content/zotero/xpcom/collectionTreeView.js +++ b/chrome/content/zotero/xpcom/collectionTreeView.js @@ -262,6 +262,9 @@ Zotero.CollectionTreeView.prototype.selectWait = Zotero.Promise.method(function this.selection.select(row); return; } + if (this.selection.currentIndex == row) { + return; + }; var deferred = Zotero.Promise.defer(); this.addEventListener('select', () => deferred.resolve()); this.selection.select(row); diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js index d6d96bbab1..666382007f 100644 --- a/chrome/content/zotero/xpcom/itemTreeView.js +++ b/chrome/content/zotero/xpcom/itemTreeView.js @@ -68,7 +68,7 @@ Zotero.ItemTreeView.prototype.type = 'item'; Zotero.ItemTreeView.prototype.setTree = Zotero.serial(Zotero.Promise.coroutine(function* (treebox) { try { - Zotero.debug("Setting tree for items view " + this.id); + Zotero.debug("Setting tree for " + this.collectionTreeRow.id + " items view " + this.id); var start = Date.now(); // Try to set the window document if not yet set if (treebox && !this._ownerDocument) { diff --git a/chrome/content/zotero/xpcom/libraryTreeView.js b/chrome/content/zotero/xpcom/libraryTreeView.js index 7110f7cc56..67cdb7e32e 100644 --- a/chrome/content/zotero/xpcom/libraryTreeView.js +++ b/chrome/content/zotero/xpcom/libraryTreeView.js @@ -82,6 +82,7 @@ Zotero.LibraryTreeView.prototype = { * @return {Integer} */ getRowByID: function (id) { + // FIXME: Should work for itemIDs too var type = id[0]; id = ('' + id).substr(1); return this._rowMap[type + id]; diff --git a/test/content/support.js b/test/content/support.js index 7187e51d3f..783a13f7c5 100644 --- a/test/content/support.js +++ b/test/content/support.js @@ -41,6 +41,7 @@ function loadBrowserWindow() { */ var loadZoteroPane = Zotero.Promise.coroutine(function* () { var win = yield loadBrowserWindow(); + Zotero.Prefs.clear('lastViewedFolder'); win.ZoteroOverlay.toggleDisplay(true); // Hack to wait for pane load to finish. This is the same hack diff --git a/test/tests/collectionTreeViewTest.js b/test/tests/collectionTreeViewTest.js index 544a7c02ff..c2ba0befb1 100644 --- a/test/tests/collectionTreeViewTest.js +++ b/test/tests/collectionTreeViewTest.js @@ -49,7 +49,7 @@ describe("Zotero.CollectionTreeView", function() { }) }) - describe("#selectByID", function () { + describe("#selectByID()", function () { it("should select the trash", function* () { yield collectionsView.selectByID("T1"); var row = collectionsView.selection.currentIndex; @@ -59,6 +59,15 @@ describe("Zotero.CollectionTreeView", function() { }) }) + describe("#selectWait()", function () { + it("shouldn't hang if row is already selected", function* () { + var row = collectionsView.getRowByID("T" + Zotero.Libraries.userLibraryID); + collectionsView.selection.select(row); + yield Zotero.Promise.delay(50); + yield collectionsView.selectWait(row); + }) + }) + describe("#notify()", function () { it("should select a new collection", function* () { // Create collection diff --git a/test/tests/itemsTest.js b/test/tests/itemsTest.js index 427112ab0e..9c31665140 100644 --- a/test/tests/itemsTest.js +++ b/test/tests/itemsTest.js @@ -1,9 +1,10 @@ describe("Zotero.Items", function () { - var win, collectionsView; + var win, collectionsView, zp; before(function* () { win = yield loadZoteroPane(); collectionsView = win.ZoteroPane.collectionsView; + zp = win.ZoteroPane; }) beforeEach(function () { return selectLibrary(win); @@ -36,7 +37,7 @@ describe("Zotero.Items", function () { assert.isFalse(yield Zotero.Items.getAsync(id1)); assert.isFalse(yield Zotero.Items.getAsync(id2)); assert.isFalse(yield Zotero.Items.getAsync(id3)); - assert.equal(win.ZoteroPane.itemsView.rowCount, 0); + assert.equal(zp.itemsView.rowCount, 0); }) }) });