Fix context pane unnecessary update

Fixes #4029
This commit is contained in:
windingwind 2024-05-10 10:59:42 +08:00 committed by Dan Stillman
parent 91c0c28b5d
commit 8b083aa426

View file

@ -97,33 +97,35 @@
_handleItemUpdate(action, type, ids, extraData) { _handleItemUpdate(action, type, ids, extraData) {
// Update, remove or re-create item panes // Update, remove or re-create item panes
for (let itemDetails of Array.from(this._itemPaneDeck.children)) { if (action === 'modify') {
let item = itemDetails.item; for (let itemDetails of Array.from(this._itemPaneDeck.children)) {
let tabID = itemDetails.dataset.tabId; let tabID = itemDetails.tabID;
if (!item) { let item = Zotero.Items.get(Zotero_Tabs._getTab(tabID)?.tab.data.itemID);
this._removeItemContext(tabID); if ((item.parentID || itemDetails.parentID)
} && item.parentID !== itemDetails.parentID) {
else if (item.parentID != itemDetails.parentID) { this._removeItemContext(tabID);
this._removeItemContext(tabID); this._addItemContext(tabID, item.itemID);
this._addItemContext(tabID, item.itemID); }
} }
} }
// Update notes lists for affected libraries // Update notes lists for affected libraries
let libraryIDs = []; if (['add', 'delete', 'modify'].includes(action)) {
for (let id of ids) { let libraryIDs = [];
let item = Zotero.Items.get(id); for (let id of ids) {
if (item && (item.isNote() || item.isRegularItem())) { let item = Zotero.Items.get(id);
libraryIDs.push(item.libraryID); if (item && (item.isNote() || item.isRegularItem())) {
libraryIDs.push(item.libraryID);
}
else if (action == 'delete') {
libraryIDs.push(extraData[id].libraryID);
}
} }
else if (action == 'delete') { for (let context of Array.from(this._notesPaneDeck.children)) {
libraryIDs.push(extraData[id].libraryID); if (libraryIDs.includes(context.libraryID)) {
} context.affectedIDs = new Set([...context.affectedIDs, ...ids]);
} context.update();
for (let context of Array.from(this._notesPaneDeck.children)) { }
if (libraryIDs.includes(context.libraryID)) {
context.affectedIDs = new Set([...context.affectedIDs, ...ids]);
context.update();
} }
} }
} }