commit 51b3951fb0eae751142e33aee5c1c62a92fb8aa2
parent 86b50427814e7a3e8180dfc2a516a363df1d017e
Author: Dan Stillman <dstillman@zotero.org>
Date: Sat, 2 Jul 2016 01:26:44 -0400
Maintain open state of groups on collectionTreeView refresh()
Diffstat:
2 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/chrome/content/zotero/xpcom/collectionTreeView.js b/chrome/content/zotero/xpcom/collectionTreeView.js
@@ -262,6 +262,7 @@ Zotero.CollectionTreeView.prototype.refresh = Zotero.Promise.coroutine(function*
new Zotero.CollectionTreeRow('group', group),
added++
);
+ added += yield this._expandRow(newRows, added - 1);
}
}
diff --git a/test/tests/collectionTreeViewTest.js b/test/tests/collectionTreeViewTest.js
@@ -37,6 +37,35 @@ describe("Zotero.CollectionTreeView", function() {
assert.strictEqual(Zotero.Prefs.get('duplicateLibraries'), "");
assert.strictEqual(Zotero.Prefs.get('unfiledLibraries'), "");
});
+
+ it("should maintain open state of group", function* () {
+ var group1 = yield createGroup();
+ var group2 = yield createGroup();
+ var group1Row = cv.getRowIndexByID(group1.treeViewID);
+ var group2Row = cv.getRowIndexByID(group2.treeViewID);
+
+ // Open group 1 and close group 2
+ if (!cv.isContainerOpen(group1Row)) {
+ yield cv.toggleOpenState(group1Row);
+ }
+ if (cv.isContainerOpen(group2Row)) {
+ yield cv.toggleOpenState(group2Row);
+ }
+ // Don't wait for delayed save
+ cv._saveOpenStates();
+
+ group1Row = cv.getRowIndexByID(group1.treeViewID);
+ group2Row = cv.getRowIndexByID(group2.treeViewID);
+
+ yield cv.refresh();
+
+ // Group rows shouldn't have changed
+ assert.equal(cv.getRowIndexByID(group1.treeViewID), group1Row);
+ assert.equal(cv.getRowIndexByID(group2.treeViewID), group2Row);
+ // Group open states shouldn't have changed
+ assert.isTrue(cv.isContainerOpen(group1Row));
+ assert.isFalse(cv.isContainerOpen(group2Row));
+ });
});
describe("collapse/expand", function () {