From 64455e656e9f446f44223432b0fe73910351e475 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Wed, 27 Jun 2012 16:03:35 -0400 Subject: [PATCH 1/2] Don't reset selection to top of items list when deleting a child item --- chrome/content/zotero/xpcom/itemTreeView.js | 25 +++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js index 28b23a8148..e6ae67afa4 100644 --- a/chrome/content/zotero/xpcom/itemTreeView.js +++ b/chrome/content/zotero/xpcom/itemTreeView.js @@ -461,6 +461,12 @@ Zotero.ItemTreeView.prototype.notify = function(action, type, ids, extraData) var row = this._itemRowMap[id]; + // Deleted items get a modify that we have to ignore when + // not viewing the trash + if (item.deleted) { + continue; + } + // Item already exists in this view if( row != null) { @@ -499,12 +505,6 @@ Zotero.ItemTreeView.prototype.notify = function(action, type, ids, extraData) else if (((itemGroup.isLibrary() || itemGroup.isGroup()) && itemGroup.ref.libraryID == item.libraryID) || (itemGroup.isCollection() && item.inCollection(itemGroup.ref.id))) { - // Deleted items get a modify that we have to ignore when - // not viewing the trash - if (item.deleted) { - continue; - } - // Otherwise the item has to be added if(item.isRegularItem() || !item.getSource()) { @@ -611,7 +611,6 @@ Zotero.ItemTreeView.prototype.notify = function(action, type, ids, extraData) } } - if (singleSelect) { if (sort) { this.sort(typeof sort == 'number' ? sort : false); @@ -674,6 +673,18 @@ Zotero.ItemTreeView.prototype.notify = function(action, type, ids, extraData) } } else { + // If this was a child item and the next item at this + // position is a top-level item, move selection one row + // up to select a sibling or parent + if (ids.length == 1 && previousRow > 0) { + var previousItem = Zotero.Items.get(ids[0]); + if (previousItem && previousItem.getSource()) { + if (this._dataItems[previousRow] && this.getLevel(previousRow) == 0) { + previousRow--; + } + } + } + if (this._dataItems[previousRow]) { this.selection.select(previousRow); } From 0dd35b952a47bb0a964387a3f7680eb926c83455 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Wed, 27 Jun 2012 17:11:37 -0400 Subject: [PATCH 2/2] Don't clear quicksearch on delete --- chrome/content/zotero/xpcom/itemTreeView.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js index e6ae67afa4..e9ade8f23c 100644 --- a/chrome/content/zotero/xpcom/itemTreeView.js +++ b/chrome/content/zotero/xpcom/itemTreeView.js @@ -525,9 +525,22 @@ Zotero.ItemTreeView.prototype.notify = function(action, type, ids, extraData) // If quicksearch, re-run it, since the results may have changed else { - quicksearch.doCommand(); - madeChanges = true; - sort = true; + // If not viewing trash and all items were deleted, ignore modify + var allDeleted = true; + if (!itemGroup.isTrash()) { + var items = Zotero.Items.get(ids); + for each(var item in items) { + if (!item.deleted) { + allDeleted = false; + break; + } + } + } + if (!allDeleted) { + quicksearch.doCommand(); + madeChanges = true; + sort = true; + } } } else if(action == 'add')