www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit f98de97e4da4d76423dddee93c1c1406e9faf599
parent 9ecfc31fd435bba759b3f77fb3adc1ecf53fe1a4
Author: Dan Stillman <dstillman@zotero.org>
Date:   Thu,  2 Feb 2017 18:37:57 -0500

Don't select last item in list when item is removed from collection

Diffstat:
Mchrome/content/zotero/xpcom/itemTreeView.js | 6+++++-
Mtest/tests/itemTreeViewTest.js | 13++++++++++++-
2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js @@ -487,7 +487,11 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio var sort = false; var savedSelection = this.getSelectedItems(true); - var previousFirstSelectedRow = this._rowMap[ids[0]]; + var previousFirstSelectedRow = this._rowMap[ + // 'collection-item' ids are in the form <collectionID>-<itemID> + // 'item' events are just integers + type == 'collection-item' ? ids[0].split('-')[1] : ids[0] + ]; // If there's not at least one new item to be selected, get a scroll position to restore later var scrollPosition = false; diff --git a/test/tests/itemTreeViewTest.js b/test/tests/itemTreeViewTest.js @@ -242,7 +242,7 @@ describe("Zotero.ItemTreeView", function() { var items = []; var num = 6; for (let i = 0; i < num; i++) { - let item = createUnsavedDataObject('item'); + let item = createUnsavedDataObject('item', { title: "" + i }); item.addToCollection(collection.id); yield item.saveTx(); items.push(item); @@ -251,6 +251,17 @@ describe("Zotero.ItemTreeView", function() { // Select the third item in the list itemsView.selection.select(2); + + // Remove item + var treeRow = itemsView.getRow(2); + yield Zotero.DB.executeTransaction(function* () { + yield collection.removeItems([treeRow.ref.id]); + }.bind(this)); + + // Selection should stay on third row + assert.equal(itemsView.selection.currentIndex, 2); + + // Delete item var treeRow = itemsView.getRow(2); yield treeRow.ref.eraseTx();