diff --git a/view/App.tsx b/view/App.tsx
index ee2b9ee..5a1c7b5 100644
--- a/view/App.tsx
+++ b/view/App.tsx
@@ -35,9 +35,18 @@ export function App({ app }: AppProps) {
const generateOpen = tools.activeTool === "generate";
useEffect(() => {
- if (tools.activeTool !== "generate") previousGenerateTool.current = tools.activeTool;
+ if (tools.activeTool !== "generate") {
+ previousGenerateTool.current = tools.activeTool;
+ return;
+ }
+
+ setLayersOpen(false);
}, [tools.activeTool]);
+ const getGenerateReturnTool = useCallback((): ToolId => {
+ return previousGenerateTool.current === "generate" ? "select" : previousGenerateTool.current;
+ }, []);
+
const openGenerate = useCallback(() => {
const activeTool = app.store.getState().editor.tools.activeTool;
if (activeTool !== "generate") previousGenerateTool.current = activeTool;
@@ -47,15 +56,21 @@ export function App({ app }: AppProps) {
const closeGenerate = useCallback(() => {
if (app.store.getState().editor.tools.activeTool === "generate") {
- app.store.dispatch(commandIds.toolSetActive, { tool: previousGenerateTool.current });
+ app.store.dispatch(commandIds.toolSetActive, { tool: getGenerateReturnTool() });
}
- }, [app.store]);
+ }, [app.store, getGenerateReturnTool]);
const toggleGenerate = useCallback(() => {
if (generateOpen) closeGenerate();
else openGenerate();
}, [closeGenerate, generateOpen, openGenerate]);
+ const toggleLayers = useCallback(() => {
+ const nextOpen = !layersOpen;
+ if (nextOpen) closeGenerate();
+ setLayersOpen(nextOpen);
+ }, [closeGenerate, layersOpen]);
+
useEffect(() => {
const handleKeyDown = (event: KeyboardEvent) => {
const target = event.target;
@@ -89,8 +104,7 @@ export function App({ app }: AppProps) {
}
if (key === "l") {
- closeGenerate();
- setLayersOpen((open) => !open);
+ toggleLayers();
event.preventDefault();
return;
}
@@ -105,7 +119,7 @@ export function App({ app }: AppProps) {
window.addEventListener("keydown", handleKeyDown);
return () => window.removeEventListener("keydown", handleKeyDown);
- }, [app.store, closeGenerate, toggleGenerate]);
+ }, [app.store, toggleLayers]);
const transformBounds = transformTarget ? resolveTransformTargetBounds(document, transformTarget) : undefined;
const brushHint = brushUnavailableHint(document, { selection, tools, maskEdit });
@@ -123,7 +137,7 @@ export function App({ app }: AppProps) {
-