diff --git a/ui/autoMate/src/main/code/ignoreMouseEvents.ts b/ui/autoMate/src/main/code/ignoreMouseEvents.ts new file mode 100644 index 0000000..4836bba --- /dev/null +++ b/ui/autoMate/src/main/code/ignoreMouseEvents.ts @@ -0,0 +1,8 @@ +import { BrowserWindow, IpcMainEvent, ipcMain } from "electron" + +export default (win: BrowserWindow) => { + ipcMain.on('setIgnoreMouseEvents', (_event: IpcMainEvent, ignore: boolean, options?:{forward: boolean}) => { + win.setIgnoreMouseEvents(ignore, options) + }) +} + diff --git a/ui/autoMate/src/main/code/index.ts b/ui/autoMate/src/main/code/index.ts index 155e85e..6100dc8 100644 --- a/ui/autoMate/src/main/code/index.ts +++ b/ui/autoMate/src/main/code/index.ts @@ -2,12 +2,14 @@ import { app } from 'electron' import { createWindow } from './window' import * as ipc from './ipc' import { registerShortCut } from './shortCut' +import ignoreMouseEvents from './ignoreMouseEvents' app.whenReady().then(() => { const window = createWindow() ipc.registerIpc(window) registerShortCut(window) + ignoreMouseEvents(window) }) diff --git a/ui/autoMate/src/main/code/shortCut.ts b/ui/autoMate/src/main/code/shortCut.ts index c8dc2c1..dd1427b 100644 --- a/ui/autoMate/src/main/code/shortCut.ts +++ b/ui/autoMate/src/main/code/shortCut.ts @@ -9,7 +9,7 @@ export const registerShortCut = (win: BrowserWindow) => { ipcMain.handle("shortCut", (_event: IpcMainInvokeEvent, type: 'search', shortCut: string) => { // react 严格模式会执行两次,可能会导致快捷键重复注册,这里在注册前会删除旧快捷键,也用户注册过快捷键想修改成其他快捷键 - // if (config.search) globalShortcut.unregister(config.search) + if (config.search) globalShortcut.unregister(config.search) config.search = shortCut switch(type){ case 'search': diff --git a/ui/autoMate/src/preload/index.d.ts b/ui/autoMate/src/preload/index.d.ts index 4ccb3e7..3b45368 100644 --- a/ui/autoMate/src/preload/index.d.ts +++ b/ui/autoMate/src/preload/index.d.ts @@ -5,7 +5,8 @@ declare global { electron: ElectronAPI api: { hideWindow: () => void, - shortCut: (type: 'search', shortCut: string) => Promise + shortCut: (type: 'search', shortCut: string) => Promise, + setIgnoreMouseEvents: (ignore: boolean, options?: { forward: boolean }) => void } } } diff --git a/ui/autoMate/src/preload/index.ts b/ui/autoMate/src/preload/index.ts index 4f2c577..c0751c5 100644 --- a/ui/autoMate/src/preload/index.ts +++ b/ui/autoMate/src/preload/index.ts @@ -8,6 +8,9 @@ const api = { }, shortCut: (type: 'search', shortCut: string) => { return ipcRenderer.invoke("shortCut", type, shortCut) + }, + setIgnoreMouseEvents: (ignore: boolean, options?: { forward: boolean }) => { + ipcRenderer.send("setIgnoreMouseEvents", ignore, options) } } diff --git a/ui/autoMate/src/renderer/src/components/Search/index.tsx b/ui/autoMate/src/renderer/src/components/Search/index.tsx index 21bb1b7..fcb03c9 100644 --- a/ui/autoMate/src/renderer/src/components/Search/index.tsx +++ b/ui/autoMate/src/renderer/src/components/Search/index.tsx @@ -2,11 +2,21 @@ import { useStore } from "@renderer/store/useStore" import useSearch from "@renderer/hooks/useSearch" import { SettingOne } from "@icon-park/react" import { Input } from "antd" +import { useEffect, useRef } from "react" export default function Search(): JSX.Element { const search = useStore((state)=>state.search) const {handleSearch} = useSearch() + const mainRef = useRef(null) + useEffect(()=>{ + mainRef.current?.addEventListener('mouseover', (_e: MouseEvent)=>{ + window.api.setIgnoreMouseEvents(false) + }) + mainRef.current?.addEventListener('mouseout', (_e: MouseEvent)=>{ + window.api.setIgnoreMouseEvents(true, {forward: true}) + }) + },[]) return ( -
+
*/}
autoMate
-
+ ) }