Merge pull request #526 from yuya-oc/reset-misspelled-state

Reset misspelled state after changing spelling language

Close #524
This commit is contained in:
Yuya Ochiai 2017-05-03 20:18:42 +09:00 committed by GitHub
commit 07b2f8fc3b
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() {
const spellCheckerLocale = ipc.sendSync('get-spellchecker-locale');
webFrame.setSpellCheckProvider(spellCheckerLocale, false, {
@ -156,6 +167,7 @@ function setSpellChecker() {
return res === null ? true : res;
}
});
resetMisspelledState();
}
setSpellChecker();
ipc.on('set-spellcheker', setSpellChecker);

View file

@ -542,6 +542,15 @@ app.on('ready', () => {
ipcMain.on('get-spellchecker-locale', (event) => {
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');
// Open the DevTools.

View file

@ -1,5 +1,6 @@
'use strict';
const EventEmitter = require('events');
const simpleSpellChecker = require('simple-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.
class SpellChecker {
class SpellChecker extends EventEmitter {
constructor(locale, dictDir, callback) {
super();
this.dict = null;
this.locale = locale;
simpleSpellChecker.getDictionary(locale, dictDir, (err, dict) => {
if (err) {
this.emit('error', err);
if (callback) {
callback(err);
}
} else {
this.dict = dict;
this.emit('ready');
if (callback) {
callback(null, this);
}