Unverified 提交 e99e19e8 authored 作者: Mohamed Aziz Mejri's avatar Mohamed Aziz Mejri 提交者: GitHub

feat: add spell check suggestions to context menu (#1509)

This PR implements spelling correction feature requested in issue #271 <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Add spell check suggestions to the context menu in editable fields. Right-clicking a misspelled word shows up to five suggestions for one-click replacement. - **New Features** - Shows a “Correct "<misspelled>"” submenu when a misspelled word is detected. - Provides up to 5 dictionary suggestions; clicking replaces the word via replaceMisspelling. - Keeps standard edit actions and tidies menu order with separators; logs errors on failure. <!-- End of auto-generated description by cubic. -->
上级 fe801462
...@@ -170,7 +170,6 @@ const createWindow = () => { ...@@ -170,7 +170,6 @@ const createWindow = () => {
event.preventDefault(); event.preventDefault();
const template: Electron.MenuItemConstructorOptions[] = []; const template: Electron.MenuItemConstructorOptions[] = [];
if (params.isEditable) { if (params.isEditable) {
template.push( template.push(
{ role: "undo" }, { role: "undo" },
...@@ -180,9 +179,29 @@ const createWindow = () => { ...@@ -180,9 +179,29 @@ const createWindow = () => {
{ role: "copy" }, { role: "copy" },
{ role: "paste" }, { role: "paste" },
{ role: "delete" }, { role: "delete" },
{ type: "separator" },
{ role: "selectAll" },
); );
if (params.misspelledWord) {
const suggestions: Electron.MenuItemConstructorOptions[] =
params.dictionarySuggestions.slice(0, 5).map((suggestion) => ({
label: suggestion,
click: () => {
try {
mainWindow?.webContents.replaceMisspelling(suggestion);
} catch (error) {
logger.error("Failed to replace misspelling:", error);
}
},
}));
template.push(
{ type: "separator" },
{
type: "submenu",
label: `Correct "${params.misspelledWord}"`,
submenu: suggestions,
},
);
}
template.push({ type: "separator" }, { role: "selectAll" });
} else { } else {
if (params.selectionText && params.selectionText.length > 0) { if (params.selectionText && params.selectionText.length > 0) {
template.push({ role: "copy" }); template.push({ role: "copy" });
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论