[オブジェクト選択不可] ObjectSetting 모달 닫힘 시 roof selectable 원복 cleanup 추가
This commit is contained in:
parent
42abe1a720
commit
8192f0929a
@ -30,9 +30,26 @@ export default function ObjectSetting({ id, pos = { x: 50, y: 230 } }) {
|
|||||||
//오브젝트 배치로 넘어오면 면형상 선택 불가
|
//오브젝트 배치로 넘어오면 면형상 선택 불가
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
canvas.discardActiveObject()
|
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) => {
|
surfaceShapePolygons.forEach((obj) => {
|
||||||
obj.set({ selectable: false })
|
obj.set({ selectable: false })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
prevSelectable.forEach(({ obj, selectable }) => {
|
||||||
|
// 객체가 이미 캔버스에서 제거됐을 수도 있으므로 canvas 멤버십 확인 후 복원.
|
||||||
|
if (canvas?.getObjects().includes(obj)) {
|
||||||
|
obj.set({ selectable })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user