diff --git a/chrome/content/zotero/itemTree.jsx b/chrome/content/zotero/itemTree.jsx index e2a1fcb91c..6538b91d61 100644 --- a/chrome/content/zotero/itemTree.jsx +++ b/chrome/content/zotero/itemTree.jsx @@ -826,9 +826,11 @@ var ItemTree = class ItemTree extends LibraryTree { reselect = true; } } - // If single item is selected and was modified + // If a single item is selected, was modified, and is not filtered out, + // make sure it's selected else if (action == 'modify' && ids.length == 1 && - savedSelection.length == 1 && savedSelection[0].id == ids[0]) { + savedSelection.length == 1 && savedSelection[0].id == ids[0] + && this.getRowIndexByID(ids[0]) !== false) { if (activeWindow) { await this.selectItem(ids[0]); reselect = true; diff --git a/test/tests/itemTreeTest.js b/test/tests/itemTreeTest.js index ed7882d85f..cd8c373cce 100644 --- a/test/tests/itemTreeTest.js +++ b/test/tests/itemTreeTest.js @@ -160,6 +160,23 @@ describe("Zotero.ItemTree", function() { assert.equal(itemsView.getRow(1).level, 1); }); }); + + it("should not clear quick search after deleting item from collection", async function () { + let col = await createDataObject('collection'); + let item = await createDataObject('item', { title: "test", collections: [col.id] }); + await zp.collectionsView.selectCollection(col.id); + + quicksearch.value = "test"; + quicksearch.doCommand(); + await itemsView._refreshPromise; + + await zp.itemsView.selectItems([item.id]); + item.removeFromCollection(col.id); + await item.saveTx(); + + await itemsView._refreshPromise; + assert.equal(quicksearch.value, "test"); + }); }); describe("#selectItem()", function () {