From 05eb3a340c23a37f5f35b2dbb5bcb1db7e5465e0 Mon Sep 17 00:00:00 2001 From: Dan Stillman <dstillman@zotero.org> Date: Tue, 12 Dec 2017 03:31:10 -0500 Subject: [PATCH] Fix cursor reset while typing in attachment notes If you started typing just as auto-save was kicking in (i.e., 1 second after stopping typing), any additional characters could be removed and the cursor could jump back to the beginning of the note. Fixes #1336, probably --- chrome/content/zotero/bindings/attachmentbox.xml | 13 +++++++++++-- chrome/content/zotero/bindings/noteeditor.xml | 6 +++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/chrome/content/zotero/bindings/attachmentbox.xml b/chrome/content/zotero/bindings/attachmentbox.xml index 68021d420..4b406f517 100644 --- a/chrome/content/zotero/bindings/attachmentbox.xml +++ b/chrome/content/zotero/bindings/attachmentbox.xml @@ -160,12 +160,21 @@ <parameter name="event"/> <parameter name="type"/> <parameter name="ids"/> + <parameter name="extraData"/> <body><![CDATA[ if (event != 'modify' || !this.item || !this.item.id) return; - for (let i = 0; i < ids.length; i++) { - if (ids[i] != this.item.id) { + for (let id of ids) { + if (id != this.item.id) { continue; } + + var noteEditor = this._id('attachment-note-editor') + if (extraData && extraData[id] + && extraData[id].noteEditorID == noteEditor.instanceID) { + //Zotero.debug("Skipping notification from current attachment note field"); + continue; + } + this.refresh(); break; } diff --git a/chrome/content/zotero/bindings/noteeditor.xml b/chrome/content/zotero/bindings/noteeditor.xml index cae663895..1f683b258 100644 --- a/chrome/content/zotero/bindings/noteeditor.xml +++ b/chrome/content/zotero/bindings/noteeditor.xml @@ -149,7 +149,7 @@ <constructor> <![CDATA[ - this._instanceID = Zotero.Utilities.randomString(); + this.instanceID = Zotero.Utilities.randomString(); this._notifierID = Zotero.Notifier.registerObserver(this, ['item'], 'noteeditor'); ]]> </constructor> @@ -172,7 +172,7 @@ if (id != this.item.id) { continue; } - if (extraData && extraData[id] && extraData[id].noteEditorID == this._instanceID) { + if (extraData && extraData[id] && extraData[id].noteEditorID == this.instanceID) { //Zotero.debug("Skipping notification from current note field"); continue; } @@ -275,7 +275,7 @@ this.noteField.changed = false; yield this.item.saveTx({ notifierData: { - noteEditorID: this._instanceID + noteEditorID: this.instanceID } }); }