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:
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 () {