mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 13:05:32 +09:00
fix(app): refocus the editor before text context menu actions (#3292)
This commit is contained in:
1 parent
0906a85d6f
commit
c3d790f664
2 files changed
+13
-7
No files matched your search
@@ -140,12 +140,6 @@ export const TextareaContextMenu = observer(
|
||||
}
|
||||
targetElement.focus({preventScroll: true});
|
||||
};
|
||||
const handleReplaceMisspelling = async (suggestion: string) => {
|
||||
if (electronAPI?.spellcheckReplaceMisspelling) {
|
||||
await electronAPI.spellcheckReplaceMisspelling(suggestion);
|
||||
}
|
||||
onClose();
|
||||
};
|
||||
const handleAddToDictionary = async () => {
|
||||
if (!misspelledWord) return;
|
||||
Spellcheck.addPersonalWord(misspelledWord);
|
||||
@@ -167,6 +161,11 @@ export const TextareaContextMenu = observer(
|
||||
requestAnimationFrame(action);
|
||||
});
|
||||
};
|
||||
const handleReplaceMisspelling = (suggestion: string) => {
|
||||
runAfterClose(() => {
|
||||
void electronAPI?.spellcheckReplaceMisspelling?.(suggestion);
|
||||
});
|
||||
};
|
||||
const execCommand = (command: string) => {
|
||||
runAfterClose(() => {
|
||||
document.execCommand(command);
|
||||
|
||||
@@ -87,6 +87,13 @@ const createSyntheticEvent = (
|
||||
relatedTarget: null,
|
||||
} satisfies React.MouseEvent<HTMLElement>;
|
||||
};
|
||||
const getEditingHost = (element: HTMLElement): HTMLElement => {
|
||||
let host = element;
|
||||
while (host.parentElement?.isContentEditable) {
|
||||
host = host.parentElement;
|
||||
}
|
||||
return host;
|
||||
};
|
||||
const getEditableTarget = (node: Element | null): HTMLElement | null => {
|
||||
if (!node) return null;
|
||||
if (node instanceof HTMLTextAreaElement) {
|
||||
@@ -99,7 +106,7 @@ const getEditableTarget = (node: Element | null): HTMLElement | null => {
|
||||
}
|
||||
}
|
||||
if ((node as HTMLElement).isContentEditable) {
|
||||
return node as HTMLElement;
|
||||
return getEditingHost(node as HTMLElement);
|
||||
}
|
||||
const textarea = node.closest('textarea') as HTMLTextAreaElement | null;
|
||||
if (textarea) {
|
||||
|
||||
Reference in new issue
Block a user