diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js index 8c21aafbc..3fd682855 100644 --- a/chrome/content/zotero/xpcom/itemTreeView.js +++ b/chrome/content/zotero/xpcom/itemTreeView.js @@ -658,7 +658,7 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio sort = true; } - if (collectionTreeRow.isFeed()) { + else if (collectionTreeRow.isFeed()) { this._ownerDocument.defaultView.ZoteroItemPane.setToggleReadLabel(); } diff --git a/test/tests/itemTreeViewTest.js b/test/tests/itemTreeViewTest.js index df66afe3b..7a8786aab 100644 --- a/test/tests/itemTreeViewTest.js +++ b/test/tests/itemTreeViewTest.js @@ -432,6 +432,35 @@ describe("Zotero.ItemTreeView", function() { assert.equal(zp.itemsView.getRowIndexByID(item.id), 0); }); + it("should re-sort search results when an item is modified", function* () { + var search = yield createDataObject('search'); + itemsView = zp.itemsView; + var title = search.getConditions()[0].value; + + var item1 = yield createDataObject('item', { title: title + " 1" }); + var item2 = yield createDataObject('item', { title: title + " 3" }); + var item3 = yield createDataObject('item', { title: title + " 5" }); + var item4 = yield createDataObject('item', { title: title + " 7" }); + + var col = itemsView._treebox.columns.getNamedColumn('zotero-items-column-title'); + col.element.click(); + if (col.element.getAttribute('sortDirection') == 'ascending') { + col.element.click(); + } + + // Check initial sort order + assert.equal(itemsView.getRow(0).ref.getField('title'), title + " 7"); + assert.equal(itemsView.getRow(3).ref.getField('title'), title + " 1"); + + // Set first row to title that should be sorted in the middle + itemsView.getRow(0).ref.setField('title', title + " 4"); + yield itemsView.getRow(0).ref.saveTx(); + + assert.equal(itemsView.getRow(0).ref.getField('title'), title + " 5"); + assert.equal(itemsView.getRow(1).ref.getField('title'), title + " 4"); + assert.equal(itemsView.getRow(3).ref.getField('title'), title + " 1"); + }); + it("should update search results when search conditions are changed", function* () { var search = createUnsavedDataObject('search'); var title1 = Zotero.Utilities.randomString();