Reset misspelled state after changing spelling language

This commit is contained in:
Yuya Ochiai
2017-05-02 23:00:40 +09:00
parent bed558d42b
commit 13172570c0
3 changed files with 26 additions and 1 deletions

View File

@@ -148,6 +148,17 @@ notification.override({
} }
}); });
function resetMisspelledState() {
ipc.once('spellchecker-is-ready', () => {
const element = document.activeElement;
if (element) {
element.blur();
element.focus();
}
});
ipc.send('reply-on-spellchecker-is-ready');
}
function setSpellChecker() { function setSpellChecker() {
const spellCheckerLocale = ipc.sendSync('get-spellchecker-locale'); const spellCheckerLocale = ipc.sendSync('get-spellchecker-locale');
webFrame.setSpellCheckProvider(spellCheckerLocale, false, { webFrame.setSpellCheckProvider(spellCheckerLocale, false, {
@@ -156,6 +167,7 @@ function setSpellChecker() {
return res === null ? true : res; return res === null ? true : res;
} }
}); });
resetMisspelledState();
} }
setSpellChecker(); setSpellChecker();
ipc.on('set-spellcheker', setSpellChecker); ipc.on('set-spellcheker', setSpellChecker);

View File

@@ -542,6 +542,15 @@ app.on('ready', () => {
ipcMain.on('get-spellchecker-locale', (event) => { ipcMain.on('get-spellchecker-locale', (event) => {
event.returnValue = config.spellCheckerLocale; event.returnValue = config.spellCheckerLocale;
}); });
ipcMain.on('reply-on-spellchecker-is-ready', (event) => {
if (spellChecker.isReady()) {
event.sender.send('spellchecker-is-ready');
return;
}
spellChecker.once('ready', () => {
event.sender.send('spellchecker-is-ready');
});
});
ipcMain.emit('update-dict'); ipcMain.emit('update-dict');
// Open the DevTools. // Open the DevTools.

View File

@@ -1,5 +1,6 @@
'use strict'; 'use strict';
const EventEmitter = require('events');
const simpleSpellChecker = require('simple-spellchecker'); const simpleSpellChecker = require('simple-spellchecker');
/// Following approach for contractions is derived from electron-spellchecker. /// Following approach for contractions is derived from electron-spellchecker.
@@ -26,17 +27,20 @@ const contractionMap = contractions.reduce((acc, word) => {
/// End: derived from electron-spellchecker. /// End: derived from electron-spellchecker.
class SpellChecker { class SpellChecker extends EventEmitter {
constructor(locale, dictDir, callback) { constructor(locale, dictDir, callback) {
super();
this.dict = null; this.dict = null;
this.locale = locale; this.locale = locale;
simpleSpellChecker.getDictionary(locale, dictDir, (err, dict) => { simpleSpellChecker.getDictionary(locale, dictDir, (err, dict) => {
if (err) { if (err) {
this.emit('error', err);
if (callback) { if (callback) {
callback(err); callback(err);
} }
} else { } else {
this.dict = dict; this.dict = dict;
this.emit('ready');
if (callback) { if (callback) {
callback(null, this); callback(null, this);
} }