commit 333675d8ea0569dcbb6355ce53e46c94568e50f0
parent 60b2e16746f49d7265022d194e561633c17ec743
Author: Dan Stillman <dstillman@zotero.org>
Date: Tue, 21 Feb 2017 01:21:07 -0500
Don't select sibling on attachment removal if attachment was unselected
Fixes #1173
Diffstat:
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js
@@ -901,9 +901,10 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio
this.rememberSelection(savedSelection);
}
}
- // On removal of a row, select item at previous position
+ // On removal of a selected row, select item at previous position
else if (savedSelection.length) {
- if (action == 'remove' || action == 'trash' || action == 'delete') {
+ if ((action == 'remove' || action == 'trash' || action == 'delete')
+ && savedSelection.some(id => this.getRowIndexByID(id) === false)) {
// In duplicates view, select the next set on delete
if (collectionTreeRow.isDuplicates()) {
if (this._rows[previousFirstSelectedRow]) {
diff --git a/test/tests/itemTreeViewTest.js b/test/tests/itemTreeViewTest.js
@@ -269,7 +269,17 @@ describe("Zotero.ItemTreeView", function() {
assert.equal(itemsView.selection.currentIndex, 2);
yield Zotero.Items.erase(items.map(item => item.id));
- })
+ });
+
+ it("shouldn't select sibling on attachment erase if attachment wasn't selected", function* () {
+ var item = yield createDataObject('item');
+ var att1 = yield importFileAttachment('test.png', { title: 'A', parentItemID: item.id });
+ var att2 = yield importFileAttachment('test.png', { title: 'B', parentItemID: item.id });
+ yield zp.itemsView.selectItem(att2.id); // expand
+ yield zp.itemsView.selectItem(item.id);
+ yield att1.eraseTx();
+ assert.sameMembers(zp.itemsView.getSelectedItems(true), [item.id]);
+ });
it("should keep first visible item in view when other items are added with skipSelect and nothing in view is selected", function* () {
var collection = yield createDataObject('collection');