diff --git a/chrome/content/zotero/collectionTree.jsx b/chrome/content/zotero/collectionTree.jsx index efff2a8a9b..398a5a519c 100644 --- a/chrome/content/zotero/collectionTree.jsx +++ b/chrome/content/zotero/collectionTree.jsx @@ -245,6 +245,11 @@ var CollectionTree = class CollectionTree extends LibraryTree { } handleActivate = (event, indices) => { + // Activation (rename collection, edit saved search/feed, open library) acts on + // a single row, so ignore it when multiple rows are selected + if (this.selection.count > 1) { + return; + } let index = indices[0]; let treeRow = this.getRow(index); if (treeRow.isCollection() && this.editable && this.selection.focused == index) { diff --git a/test/tests/collectionTreeTest.js b/test/tests/collectionTreeTest.js index 8248e6bc6a..33b91500ed 100644 --- a/test/tests/collectionTreeTest.js +++ b/test/tests/collectionTreeTest.js @@ -709,6 +709,20 @@ describe("Zotero.CollectionTree", function () { }); }); + describe("#handleActivate()", function () { + it("shouldn't start editing when multiple collections are selected", async function () { + let c1 = await createDataObject('collection'); + let c2 = await createDataObject('collection'); + await cv.selectByID("C" + c1.id); + cv.selection.toggleSelect(cv.getRowIndexByID("C" + c2.id)); + assert.equal(cv.selection.count, 2); + + cv.handleActivate(new Event('keydown'), [cv.selection.focused]); + + assert.notOk(cv._editing); + }); + }); + describe("#onDrop()", function () { /** * Simulate a drag and drop