diff --git a/src/js/components/BlockToolsSidebar.js b/src/js/components/BlockToolsSidebar.js index 5cab168..4d61d9f 100644 --- a/src/js/components/BlockToolsSidebar.js +++ b/src/js/components/BlockToolsSidebar.js @@ -1034,13 +1034,20 @@ const BlockToolsSidebar = ({ selectedBlockID = envType.id; }; + const shouldPreserveActiveToolOnBlockChange = (activeToolName) => { + if (!activeToolName) return false; + return ["terrain", "replace", "walltool", "groundtool"].includes( + activeToolName.toLowerCase() + ); + }; + const handleBlockSelect = async (blockType) => { - // Keep Terrain tool active while changing blocks; deactivate others + // Keep block-driven paint/placement tools active while changing blocks. try { const manager = terrainBuilderRef?.current?.toolManagerRef?.current; const activeToolInstance = manager?.getActiveTool?.(); const activeToolName = activeToolInstance?.name; - if (activeToolName && activeToolName !== "terrain") { + if (activeToolName && !shouldPreserveActiveToolOnBlockChange(activeToolName)) { terrainBuilderRef?.current?.activateTool(null); } } catch (_) {