Fix refresh problems when Advanced Search is open, and maybe other times
This commit is contained in:
parent
48d4d2d5a5
commit
89babf8832
1 changed files with 14 additions and 2 deletions
|
@ -878,6 +878,7 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var reselect = false;
|
||||||
if(madeChanges)
|
if(madeChanges)
|
||||||
{
|
{
|
||||||
// If we made individual changes, we have to clear the cache
|
// If we made individual changes, we have to clear the cache
|
||||||
|
@ -932,6 +933,7 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio
|
||||||
// Reset to Info tab
|
// Reset to Info tab
|
||||||
this._ownerDocument.getElementById('zotero-view-tabbox').selectedIndex = 0;
|
this._ownerDocument.getElementById('zotero-view-tabbox').selectedIndex = 0;
|
||||||
yield this.selectItem(singleSelect);
|
yield this.selectItem(singleSelect);
|
||||||
|
reselect = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If single item is selected and was modified
|
// If single item is selected and was modified
|
||||||
|
@ -939,9 +941,11 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio
|
||||||
savedSelection.length == 1 && savedSelection[0] == ids[0]) {
|
savedSelection.length == 1 && savedSelection[0] == ids[0]) {
|
||||||
if (activeWindow) {
|
if (activeWindow) {
|
||||||
yield this.selectItem(ids[0]);
|
yield this.selectItem(ids[0]);
|
||||||
|
reselect = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.rememberSelection(savedSelection);
|
this.rememberSelection(savedSelection);
|
||||||
|
reselect = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// On removal of a selected row, select item at previous position
|
// On removal of a selected row, select item at previous position
|
||||||
|
@ -955,6 +959,7 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio
|
||||||
var itemID = this._rows[previousFirstSelectedRow].ref.id;
|
var itemID = this._rows[previousFirstSelectedRow].ref.id;
|
||||||
var setItemIDs = collectionTreeRow.ref.getSetItemsByItemID(itemID);
|
var setItemIDs = collectionTreeRow.ref.getSetItemsByItemID(itemID);
|
||||||
this.selectItems(setItemIDs);
|
this.selectItems(setItemIDs);
|
||||||
|
reselect = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -973,15 +978,18 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio
|
||||||
|
|
||||||
if (previousFirstSelectedRow !== undefined && this._rows[previousFirstSelectedRow]) {
|
if (previousFirstSelectedRow !== undefined && this._rows[previousFirstSelectedRow]) {
|
||||||
this.selection.select(previousFirstSelectedRow);
|
this.selection.select(previousFirstSelectedRow);
|
||||||
|
reselect = true;
|
||||||
}
|
}
|
||||||
// If no item at previous position, select last item in list
|
// If no item at previous position, select last item in list
|
||||||
else if (this._rows[this._rows.length - 1]) {
|
else if (this._rows[this._rows.length - 1]) {
|
||||||
this.selection.select(this._rows.length - 1);
|
this.selection.select(this._rows.length - 1);
|
||||||
|
reselect = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.rememberSelection(savedSelection);
|
this.rememberSelection(savedSelection);
|
||||||
|
reselect = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -998,11 +1006,15 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio
|
||||||
|
|
||||||
//this._treebox.endUpdateBatch();
|
//this._treebox.endUpdateBatch();
|
||||||
let selectPromise;
|
let selectPromise;
|
||||||
if (madeChanges) {
|
// If we made changes to the selection (including reselecting the same item, which will register as
|
||||||
|
// a selection when selectEventsSuppressed is set to false), wait for selection handlers to be run
|
||||||
|
// before returning. This guarantees that changes are reflected in the middle and right-hand panes
|
||||||
|
// before returning from the save transaction.
|
||||||
|
if (reselect) {
|
||||||
selectPromise = this.waitForSelect();
|
selectPromise = this.waitForSelect();
|
||||||
}
|
}
|
||||||
this.selection.selectEventsSuppressed = false;
|
this.selection.selectEventsSuppressed = false;
|
||||||
if (madeChanges) {
|
if (reselect) {
|
||||||
Zotero.debug("Yielding for select promise"); // TEMP
|
Zotero.debug("Yielding for select promise"); // TEMP
|
||||||
return selectPromise;
|
return selectPromise;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue