From dd0156153745be2424271c726ef92f2b7eda2373 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 5 Feb 2019 10:46:47 +1000 Subject: [PATCH] fire saveField("key") when webview loses focus fixes the following reported issue, caused by currentField being sent to None: 1. Start from the main view. 2. Click Add 3. In the Add window, change deck 4. In the Choose Deck window, add a new deck, give a random name 5. Back in the Add window, call "Edit HTML" 6. Anki displays an error This change will mean the editFocusLost hook will not fire when switching between windows, which is probably an improvement. --- web/editor.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/web/editor.js b/web/editor.js index 323c19e1a..387f10b97 100644 --- a/web/editor.js +++ b/web/editor.js @@ -24,6 +24,7 @@ function saveNow(keepFocus) { if (keepFocus) { saveField("key"); } else { + // triggers onBlur, which saves currentField.blur(); } } @@ -207,28 +208,28 @@ function caretToEnd() { } function onBlur() { - if (currentField) { - saveField("blur"); - clearChangeTimer(); + if (!currentField) { + return; } if (document.activeElement === currentField) { // other widget or window focused; current field unchanged - return; + saveField("key"); + } else { + saveField("blur"); + currentField = null; + disableButtons(); } - - currentField = null; - disableButtons(); } function saveField(type) { + clearChangeTimer(); if (!currentField) { // no field has been focused yet return; } // type is either 'blur' or 'key' pycmd(type + ":" + currentFieldOrdinal() + ":" + currentNoteId + ":" + currentField.innerHTML); - clearChangeTimer(); } function currentFieldOrdinal() {