change restore window

This commit is contained in:
Nomi Nonsense (Nonszy) 2025-09-03 12:45:09 +07:00
parent 9471a13388
commit 0b04eed82b
2 changed files with 16 additions and 7 deletions

View File

@ -8,12 +8,16 @@ import React, { useState, useRef, useEffect, useReducer } from "react";
export const RestoreWindowsButton = ({ onClick, className, ...props}: React.ComponentProps<"button">) => { export const RestoreWindowsButton = ({ onClick, className, ...props}: React.ComponentProps<"button">) => {
const windowManager = useWindowManager(); const windowManager = useWindowManager();
const isAnyWindowsClosed = !windowManager.windows.find(w => w.closed == true); const isWindowsDataDirty = !windowManager.windows.find(w =>
w.closed == true
|| w.minimized == true
|| (w.offset.x != 0 && w.offset.y != 0)
)
return ( return (
<button <button
className={clsx("bg-primary border border-[#FFA826]", className, isAnyWindowsClosed && "hidden")} className={clsx("bg-primary border border-[#FFA826]", className, isWindowsDataDirty && "hidden")}
onClick={windowManager.openAll} onClick={windowManager.resetAll}
{...props} {...props}
/> />
) )

View File

@ -22,7 +22,7 @@ interface WindowManagerContextType {
close: (name: string) => void; close: (name: string) => void;
remove: (name: string) => void; remove: (name: string) => void;
move: (name: string, offset: { x: number; y: number }) => void; move: (name: string, offset: { x: number; y: number }) => void;
openAll: () => void; resetAll: () => void;
} }
const WindowManagerContext = createContext<WindowManagerContextType | undefined>(undefined); const WindowManagerContext = createContext<WindowManagerContextType | undefined>(undefined);
@ -64,15 +64,20 @@ export const WindowManagerProvider: React.FC<{ children: React.ReactNode }> = ({
const remove = (name: string) => setWindows(w => w.filter(win => win.name !== name)); const remove = (name: string) => setWindows(w => w.filter(win => win.name !== name));
const openAll = () => setWindows(w => const resetAll = () => setWindows(w =>
w.map(win => ({ ...win, closed: false })) w.map(win => ({
name: win.name,
closed: false,
minimized: false,
offset: { x: 0, y: 0 }
}))
); );
return ( return (
<WindowManagerContext.Provider value={{ <WindowManagerContext.Provider value={{
windows, windows,
isLocalDataExists, isLocalDataExists,
get, add, updateWindow, toggleMinimize, close, move, remove, openAll get, add, updateWindow, toggleMinimize, close, move, remove, resetAll
}}> }}>
{children} {children}
</WindowManagerContext.Provider> </WindowManagerContext.Provider>