From c5b44c0259387030f9e3d31ae1db8903a95b6b67 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Mon, 11 Dec 2017 12:25:49 +0100 Subject: always initialize ContextMenuBuilder but not spellchecker --- src/webview/spellchecker.js | 48 ++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 18 deletions(-) (limited to 'src/webview/spellchecker.js') diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js index 5beb77e03..5704779d7 100644 --- a/src/webview/spellchecker.js +++ b/src/webview/spellchecker.js @@ -1,30 +1,42 @@ -import { SpellCheckHandler, ContextMenuListener, ContextMenuBuilder } from 'electron-spellchecker'; +import { SpellCheckHandler } from 'electron-spellchecker'; import { isMac } from '../environment'; export default class Spellchecker { - isEnabled = false; - spellchecker = null; + isInitialized = false; + handler = null; + initRetries = 0; + + initialize() { + this.handler = new SpellCheckHandler(); - enable() { - this.spellchecker = new SpellCheckHandler(); if (!isMac) { - this.spellchecker.attachToInput(); - this.spellchecker.switchLanguage(navigator.language); + this.attach(); + } else { + this.isInitialized = true; } + } - const contextMenuBuilder = new ContextMenuBuilder(this.spellchecker); + attach() { + let initFailed = false; - new ContextMenuListener((info) => { // eslint-disable-line - contextMenuBuilder.showPopupMenu(info); - }); - } + if (this.initRetries > 3) { + console.error('Could not initialize spellchecker'); + return; + } - // TODO: this does not work yet, needs more testing - // switchLanguage(language) { - // if (language !== 'auto') { - // this.spellchecker.switchLanguage(language); - // } - // } + try { + this.handler.attachToInput(); + this.handler.switchLanguage(navigator.language); + } catch (err) { + initFailed = true; + this.initRetries = +1; + setTimeout(() => { this.attach(); console.warn('Spellchecker init failed, trying again in 5s'); }, 5000); + } + + if (!initFailed) { + this.isInitialized = true; + } + } } -- cgit v1.2.3-54-g00ecf