From fc49f232d9ac116f2a3bd7667fdd3e553df7516f Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 13 Dec 2017 11:20:13 +0100 Subject: override spellchecker attribute on inputs to enable/disable spellchecker --- src/webview/plugin.js | 15 +++++---------- src/webview/spellchecker.js | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/webview/plugin.js b/src/webview/plugin.js index 610dffc8e..cf38169d3 100644 --- a/src/webview/plugin.js +++ b/src/webview/plugin.js @@ -21,23 +21,18 @@ ipcRenderer.on('initializeRecipe', (e, data) => { } }); -let contextMenuBuilder = new ContextMenuBuilder(null, null, isDevMode); const spellchecker = new Spellchecker(); +spellchecker.initialize(); + +const contextMenuBuilder = new ContextMenuBuilder(spellchecker.handler, null, isDevMode); new ContextMenuListener((info) => { // eslint-disable-line contextMenuBuilder.showPopupMenu(info); }); ipcRenderer.on('settings-update', (e, data) => { - if (data.enableSpellchecking && !spellchecker.isInitialized) { - spellchecker.initialize(); - - contextMenuBuilder = new ContextMenuBuilder(spellchecker.handler, null, isDevMode); - - new ContextMenuListener((info) => { // eslint-disable-line - contextMenuBuilder.showPopupMenu(info); - }); - } + console.log('settings-update', data); + spellchecker.toggleSpellchecker(data.enableSpellchecking); }); // initSpellche diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js index 5704779d7..a504a4039 100644 --- a/src/webview/spellchecker.js +++ b/src/webview/spellchecker.js @@ -6,6 +6,11 @@ export default class Spellchecker { isInitialized = false; handler = null; initRetries = 0; + DOMCheckInterval = null; + + get inputs() { + return document.querySelectorAll('input[type="text"], [contenteditable="true"], textarea'); + } initialize() { this.handler = new SpellCheckHandler(); @@ -38,5 +43,21 @@ export default class Spellchecker { this.isInitialized = true; } } + + toggleSpellchecker(enable = false) { + this.inputs.forEach((input) => { + input.setAttribute('spellcheck', enable); + }); + + this.intervalHandler(enable); + } + + intervalHandler(enable) { + clearInterval(this.DOMCheckInterval); + + if (enable) { + this.DOMCheckInterval = setInterval(() => this.toggleSpellchecker(enable), 30000); + } + } } -- cgit v1.2.3-70-g09d2