From 8192f0929a3f3b3cc68f7f26f1bf5f773c2d29df Mon Sep 17 00:00:00 2001 From: ysCha Date: Fri, 8 May 2026 17:35:55 +0900 Subject: [PATCH] =?UTF-8?q?[=E3=82=AA=E3=83=96=E3=82=B8=E3=82=A7=E3=82=AF?= =?UTF-8?q?=E3=83=88=E9=81=B8=E6=8A=9E=E4=B8=8D=E5=8F=AF]=20ObjectSetting?= =?UTF-8?q?=20=EB=AA=A8=EB=8B=AC=20=EB=8B=AB=ED=9E=98=20=EC=8B=9C=20roof?= =?UTF-8?q?=20selectable=20=EC=9B=90=EB=B3=B5=20cleanup=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../floor-plan/modal/object/ObjectSetting.jsx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/components/floor-plan/modal/object/ObjectSetting.jsx b/src/components/floor-plan/modal/object/ObjectSetting.jsx index 41eaa833..3d1ce3ab 100644 --- a/src/components/floor-plan/modal/object/ObjectSetting.jsx +++ b/src/components/floor-plan/modal/object/ObjectSetting.jsx @@ -30,9 +30,26 @@ export default function ObjectSetting({ id, pos = { x: 50, y: 230 } }) { //오브젝트 배치로 넘어오면 면형상 선택 불가 useEffect(() => { canvas.discardActiveObject() + + // [ROOF-SELECTABLE-RESTORE 2026-05-08] 모달 닫힘 시 roof selectable 원복. + // 누락되어 있어 한 번 진입 후엔 지붕 선택 불가 → 자동배치 단계에서 다른 hook 이 다시 + // selectable=true 로 set 해주기 전까진 클릭 무반응 상태가 지속됐음. + // 무조건 true 로 복원하면 동시에 열린 다른 모드(roof.selectable=false 의도) 와 충돌 가능 → + // 진입 시점의 원래 값을 snapshot 해두고 cleanup 시 그 값으로 복원(다른 모드의 의도 보존). + const prevSelectable = surfaceShapePolygons.map((obj) => ({ obj, selectable: obj.selectable })) + surfaceShapePolygons.forEach((obj) => { obj.set({ selectable: false }) }) + + return () => { + prevSelectable.forEach(({ obj, selectable }) => { + // 객체가 이미 캔버스에서 제거됐을 수도 있으므로 canvas 멤버십 확인 후 복원. + if (canvas?.getObjects().includes(obj)) { + obj.set({ selectable }) + } + }) + } }, []) /**