From f420bf4192e291ead7ea535ef7e80df77ea2d74e Mon Sep 17 00:00:00 2001 From: maxichrome Date: Wed, 11 May 2022 15:50:46 -0500 Subject: [PATCH] move focus event to JS with built-in events --- apps/desktop/src-tauri/src/window.rs | 10 ---------- apps/desktop/src/index.tsx | 12 ++++++++++++ packages/interface/src/App.tsx | 4 ++++ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/apps/desktop/src-tauri/src/window.rs b/apps/desktop/src-tauri/src/window.rs index 300ae67e5..8c31a7713 100644 --- a/apps/desktop/src-tauri/src/window.rs +++ b/apps/desktop/src-tauri/src/window.rs @@ -2,16 +2,6 @@ use tauri::{GlobalWindowEvent, Runtime, Window, Wry}; pub(crate) fn handle_window_event(event: GlobalWindowEvent) { match event.event() { - tauri::WindowEvent::Focused(_focus) => { - // let fullscreen = event.window().is_fullscreen().unwrap_or(false); - - // println!("fullscreen, {}", fullscreen); - - // #[cfg(target_os = "macos")] - // event - // .window() - // .set_transparent_titlebar(!fullscreen, !fullscreen); - } _ => {} } } diff --git a/apps/desktop/src/index.tsx b/apps/desktop/src/index.tsx index bc424acd6..34835a780 100644 --- a/apps/desktop/src/index.tsx +++ b/apps/desktop/src/index.tsx @@ -45,12 +45,23 @@ function App() { } const [platform, setPlatform] = useState('macOS'); + const [focused, setFocused] = useState(true); useEffect(() => { os.platform().then((platform) => setPlatform(getPlatform(platform))); invoke('app_ready'); }, []); + useEffect(() => { + const unlistenFocus = listen('tauri://focus', () => setFocused(true)); + const unlistenBlur = listen('tauri://blur', () => setFocused(false)); + + return () => { + unlistenFocus.then((unlisten) => unlisten()); + unlistenBlur.then((unlisten) => unlisten()); + }; + }, []); + return ( { return dialog.open(options); }} + isFocused={focused} onClose={() => appWindow.close()} onFullscreen={() => appWindow.setFullscreen(true)} onMinimize={() => appWindow.minimize()} diff --git a/packages/interface/src/App.tsx b/packages/interface/src/App.tsx index 2535acbf5..967bed6e8 100644 --- a/packages/interface/src/App.tsx +++ b/packages/interface/src/App.tsx @@ -51,6 +51,7 @@ export interface AppProps { onMinimize?: () => void; onFullscreen?: () => void; onOpen?: (path: string) => void; + isFocused?: boolean; useMemoryRouter: boolean; demoMode?: boolean; } @@ -214,6 +215,9 @@ export default function App(props: AppProps) { console.log('App props', props); + // default prop values + props.isFocused ??= true; + return ( <> {/* @ts-ignore */}