Skip to content

Commit 2dcf431

Browse files
authored
Merge pull request #1494 from Hirobreak/electron-eight
bump electron, builder and keytar version to allow native spellchecker
2 parents 6623c1c + 37b2da3 commit 2dcf431

File tree

10 files changed

+770
-558
lines changed

10 files changed

+770
-558
lines changed

electron_app/package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@
145145
},
146146
"devDependencies": {
147147
"@criptext/criptext-js-tools": "^0.5.2",
148-
"electron": "6.1.4",
149-
"electron-builder": "21.2.0",
148+
"electron": "8.0.0",
149+
"electron-builder": "22.4.0",
150150
"electron-notarize": "^0.1.1"
151151
},
152152
"dependencies": {
@@ -163,7 +163,7 @@
163163
"electron-updater": "^4.0.0",
164164
"electron-window-state": "^4.1.1",
165165
"getos": "^3.1.1",
166-
"keytar": "^5.0.0",
166+
"keytar": "5.2.0",
167167
"knex": "0.17.6",
168168
"line-by-line": "^0.1.6",
169169
"moment": "^2.24.0",
@@ -174,7 +174,6 @@
174174
"rimraf": "^2.6.3",
175175
"rmdir-recursive": "^0.0.1",
176176
"sequelize": "^5.21.2",
177-
"spellchecker": "^3.7.0",
178177
"sqlite3": "^4.1.0",
179178
"umzug": "^2.2.0",
180179
"unused-filename": "^2.1.0",

electron_app/src/windows/composer.js

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
const path = require('path');
2-
const { BrowserWindow } = require('electron');
2+
const { BrowserWindow, Menu, MenuItem } = require('electron');
33
const { composerUrl } = require('./../window_routing');
44
const globalManager = require('./../globalManager');
55
const { EVENTS, callEvent } = require('./events');
66
const fileUtils = require('../utils/FileUtils');
77
const { API_TRACKING_EVENT } = require('../utils/const');
88
const { filterInvalidEmailAddresses } = require('./../utils/EmailUtils');
9+
const { isMacOS } = require('./windowUtils');
910
const logger = require('../logger');
10-
const spellChecker = require('spellchecker');
1111

1212
const lang = require('./../lang');
1313
const { windowTitle } = lang.strings.windows.composer;
@@ -51,7 +51,8 @@ const createComposerWindow = () => {
5151
minWidth: composerSize.minWidth,
5252
minHeight: composerSize.minHeight,
5353
webPreferences: {
54-
nodeIntegration: true
54+
nodeIntegration: true,
55+
spellcheck: true
5556
}
5657
});
5758
globalManager.composerData.set(window.id, {});
@@ -85,33 +86,54 @@ const createComposerWindow = () => {
8586
}
8687
});
8788

88-
require('electron-context-menu')({
89-
window,
90-
showSaveImageAs: false,
91-
showInspectElement: false,
92-
showCopyImageAddress: false,
93-
prepend: (defaultActions, browserWindow) => {
94-
const checker = new spellChecker.Spellchecker();
89+
if (!isMacOS) {
90+
const mySession = window.session || window.webContents.session;
91+
if (mySession && mySession.setSpellCheckerLanguages) {
92+
mySession.setSpellCheckerLanguages(['es', 'en', 'fr', 'de', 'ru']);
93+
logger.info(mySession.availableSpellCheckerLanguages);
94+
}
95+
}
96+
window.webContents.on('context-menu', (event, params) => {
97+
const { editFlags, mediaType } = params;
98+
const menu = new Menu();
9599

96-
let options = [];
97-
if (defaultActions.misspelledWord) {
98-
options = options.concat(
99-
checker
100-
.getCorrectionsForMisspelling(defaultActions.misspelledWord)
101-
.map(word => {
102-
return {
103-
label: word,
104-
click: () => {
105-
browserWindow.webContents.insertText(word);
106-
}
107-
};
108-
})
109-
.slice(0, 5)
110-
);
111-
}
112-
return options;
100+
for (const suggestion of params.dictionarySuggestions.slice(0, 5)) {
101+
menu.append(
102+
new MenuItem({
103+
label: suggestion,
104+
click: () => window.webContents.replaceMisspelling(suggestion)
105+
})
106+
);
113107
}
108+
109+
if (params.dictionarySuggestions.length > 0)
110+
menu.append(new MenuItem({ type: 'separator' }));
111+
112+
menu.append(
113+
new MenuItem({
114+
label: 'Cut',
115+
enabled: editFlags.canCut,
116+
click: () => window.webContents.cut()
117+
})
118+
);
119+
menu.append(
120+
new MenuItem({
121+
label: 'Copy',
122+
enabled: editFlags.canCopy,
123+
click: () => window.webContents.copy()
124+
})
125+
);
126+
menu.append(
127+
new MenuItem({
128+
label: 'Paste',
129+
enabled: editFlags.canPaste && mediaType === 'none',
130+
click: () => window.webContents.paste()
131+
})
132+
);
133+
134+
menu.popup();
114135
});
136+
115137
return window;
116138
};
117139

0 commit comments

Comments
 (0)