diff --git a/chrome/content/zotero/itemPane.js b/chrome/content/zotero/itemPane.js index 9a432ef31..9eb4e3fa2 100644 --- a/chrome/content/zotero/itemPane.js +++ b/chrome/content/zotero/itemPane.js @@ -25,7 +25,7 @@ var ZoteroItemPane = new function() { var _lastItem, _itemBox, _notesLabel, _notesButton, _notesList, _tagsBox, _relatedBox; - var _selectedNote; + var _selectedNoteID; var _translationTarget; var _noteIDs; @@ -61,8 +61,6 @@ var ZoteroItemPane = new function() { * Load a top-level item */ this.viewItem = Zotero.Promise.coroutine(function* (item, mode, index) { - _selectedNote = null; - if (!index) { index = 0; } @@ -226,7 +224,7 @@ var ZoteroItemPane = new function() { this.onNoteSelected = function (item, editable) { - _selectedNote = item; + _selectedNoteID = item.id; // If an external note window is open for this item, don't show the editor if (ZoteroPane.findNoteWindow(item.id)) { @@ -263,19 +261,20 @@ var ZoteroItemPane = new function() { * Select the parent item and open the note editor */ this.openNoteWindow = async function () { - var noteID = _selectedNote.id; + var selectedNote = Zotero.Items.get(_selectedNoteID); + // We don't want to show the note in two places, since it causes unnecessary UI updates // and can result in weird bugs where note content gets lost. // // If this is a child note, select the parent - if (_selectedNote.parentID) { - await ZoteroPane.selectItem(_selectedNote.parentID); + if (selectedNote.parentID) { + await ZoteroPane.selectItem(selectedNote.parentID); } // Otherwise, hide note and replace with a message that we're editing externally else { this.showNoteWindowMessage(); } - ZoteroPane.openNoteWindow(noteID); + ZoteroPane.openNoteWindow(selectedNote.id); };