www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 2901174ba335cfd6d7eb0a1670be3ace78d52082
parent d2716839680cb6857db2b1e00fe310f92e7717ca
Author: Dan Stillman <dstillman@zotero.org>
Date:   Sun, 10 Sep 2017 03:18:25 -0400

Fix intermittent item selection failure

Diffstat:
Mchrome/content/zotero/xpcom/collectionTreeView.js | 12+++++-------
Mchrome/content/zotero/xpcom/itemTreeView.js | 1-
Mchrome/content/zotero/zoteroPane.js | 2+-
Mtest/tests/collectionTreeViewTest.js | 8++++++++
4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/chrome/content/zotero/xpcom/collectionTreeView.js b/chrome/content/zotero/xpcom/collectionTreeView.js @@ -38,6 +38,7 @@ Zotero.CollectionTreeView = function() { Zotero.LibraryTreeView.apply(this); + this.itemTreeView = null; this.itemToSelect = null; this.hideSources = []; @@ -1179,11 +1180,9 @@ Zotero.CollectionTreeView.prototype.selectItem = Zotero.Promise.coroutine(functi yield this.selectLibrary(item.libraryID); } - var itemsView = this.selectedTreeRow.itemTreeView; + yield this.itemTreeView.waitForLoad(); - yield itemsView.waitForLoad(); - - var selected = yield itemsView.selectItem(itemID, expand); + var selected = yield this.itemTreeView.selectItem(itemID, expand); if (selected) { return true; } @@ -1197,10 +1196,9 @@ Zotero.CollectionTreeView.prototype.selectItem = Zotero.Promise.coroutine(functi yield this.selectLibrary(item.libraryID); } - itemsView = this.selectedTreeRow.itemTreeView; - yield itemsView.waitForLoad(); + yield this.itemTreeView.waitForLoad(); - return itemsView.selectItem(itemID, expand); + return this.itemTreeView.selectItem(itemID, expand); }); diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js @@ -40,7 +40,6 @@ Zotero.ItemTreeView = function (collectionTreeRow) { this.wrappedJSObject = this; this.rowCount = 0; this.collectionTreeRow = collectionTreeRow; - collectionTreeRow.itemTreeView = this; this._skipKeypress = false; diff --git a/chrome/content/zotero/zoteroPane.js b/chrome/content/zotero/zoteroPane.js @@ -1225,7 +1225,7 @@ var ZoteroPane = new function() this._updateToolbarIconsForRow(collectionTreeRow); - this.itemsView = new Zotero.ItemTreeView(collectionTreeRow); + this.itemsView = this.collectionsView.itemTreeView = new Zotero.ItemTreeView(collectionTreeRow); if (collectionTreeRow.isPublications()) { this.itemsView.collapseAll = true; } diff --git a/test/tests/collectionTreeViewTest.js b/test/tests/collectionTreeViewTest.js @@ -62,6 +62,14 @@ describe("Zotero.CollectionTreeView", function() { assert.isTrue(cv.isContainerOpen(group1Row)); assert.isFalse(cv.isContainerOpen(group2Row)); }); + + it("should update associated item tree view", function* () { + var collection = yield createDataObject('collection'); + var item = yield createDataObject('item', { collections: [collection.id] }); + yield cv.reload(); + yield cv.selectCollection(collection.id); + yield cv.selectItem(item.id); + }); }); describe("collapse/expand", function () {