History

feat(desktop): add spellcheck suggestions to context menu (#500)

Wire up Electron's context-menu event on webContents to surface dictionary suggestions for misspelled words. Standard edit actions (Cut, Copy, Paste, Select All) appear in all context menus. Related to #473

(CJ) Chukwudi Nwobodo committed 8 months ago

Commit 18b65901 parent d62ffa71 file · +28 −0Browse files

Unified · Split

apps/desktop/src/main.ts+28−0
@@ -1114,6 +1114,34 @@ function createWindow(): BrowserWindow { · 1113 unmodified lines
11141114 },
11151115 });
11161116
1117+ window.webContents.on("context-menu", (event, params) => {
1118+ event.preventDefault();
1119+
1120+ const menuTemplate: MenuItemConstructorOptions[] = [];
1121+
1122+ if (params.misspelledWord) {
1123+ for (const suggestion of params.dictionarySuggestions.slice(0, 5)) {
1124+ menuTemplate.push({
1125+ label: suggestion,
1126+ click: () => window.webContents.replaceMisspelling(suggestion),
1127+ });
1128+ }
1129+ if (params.dictionarySuggestions.length === 0) {
1130+ menuTemplate.push({ label: "No suggestions", enabled: false });
1131+ }
1132+ menuTemplate.push({ type: "separator" });
1133+ }
1134+
1135+ menuTemplate.push(
1136+ { role: "cut", enabled: params.editFlags.canCut },
1137+ { role: "copy", enabled: params.editFlags.canCopy },
1138+ { role: "paste", enabled: params.editFlags.canPaste },
1139+ { role: "selectAll", enabled: params.editFlags.canSelectAll },
1140+ );
1141+
1142+ Menu.buildFromTemplate(menuTemplate).popup({ window });
1143+ });
1144+
11171145 window.webContents.setWindowOpenHandler(() => ({ action: "deny" }));
11181146 window.on("page-title-updated", (event) => {
11191147 event.preventDefault();

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t