[1189_4] 드래그 박스 모듈 Del 삭제 불가 수정 — roof 복수선택 시 discardActiveObject 차단 + module 우선 currentObject 설정 #913
@ -196,9 +196,14 @@ export function useCanvasEvent() {
|
|||||||
|
|
||||||
const selectionEvent = {
|
const selectionEvent = {
|
||||||
created: (e) => {
|
created: (e) => {
|
||||||
const target = e.selected[0]
|
|
||||||
setCurrentObject(target)
|
|
||||||
const { selected } = e
|
const { selected } = e
|
||||||
|
// [DEL-DRAG-FIX 2026-06-12] 드래그 박스로 roof/surface 등이 섞여 잡히면 e.selected[0] 가 비-module 이 되어
|
||||||
|
// currentObject 가 module 로 안 잡힘 → contextMenu 에 module remove 미세팅 → Del 무반응.
|
||||||
|
// 모듈 기본설정 메뉴에서는 module 을 우선해 currentObject 로 설정.
|
||||||
|
const selectedModules = selected?.filter((o) => o.name === POLYGON_TYPE.MODULE) ?? []
|
||||||
|
const target =
|
||||||
|
currentMenu === MENU.MODULE_CIRCUIT_SETTING.BASIC_SETTING && selectedModules.length > 0 ? selectedModules[0] : e.selected[0]
|
||||||
|
setCurrentObject(target)
|
||||||
|
|
||||||
if (selected?.length > 0) {
|
if (selected?.length > 0) {
|
||||||
selected.forEach((obj) => {
|
selected.forEach((obj) => {
|
||||||
@ -212,7 +217,12 @@ export function useCanvasEvent() {
|
|||||||
obj.set({ strokeWidth: 3 })
|
obj.set({ strokeWidth: 3 })
|
||||||
}
|
}
|
||||||
if (obj.name === POLYGON_TYPE.ROOF) {
|
if (obj.name === POLYGON_TYPE.ROOF) {
|
||||||
canvas.discardActiveObject()
|
// [DEL-DRAG-FIX 2026-06-12] 드래그 박스 복수선택에 roof 가 섞이면 discardActiveObject 가 전체 선택을 해제하고
|
||||||
|
// selection:cleared → currentObject=null 로 만들어 Del 리스너가 제거됨(삭제 불가). 복수선택은
|
||||||
|
// refineModuleSelection 이 모듈만 정제하므로, 단일 roof 클릭일 때만 해제한다.
|
||||||
|
if (selected.length === 1) {
|
||||||
|
canvas.discardActiveObject()
|
||||||
|
}
|
||||||
obj.set({ stroke: originStroke })
|
obj.set({ stroke: originStroke })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -245,9 +255,12 @@ export function useCanvasEvent() {
|
|||||||
canvas.renderAll()
|
canvas.renderAll()
|
||||||
},
|
},
|
||||||
updated: (e) => {
|
updated: (e) => {
|
||||||
const target = e.selected[0]
|
|
||||||
setCurrentObject(target)
|
|
||||||
const { selected, deselected } = e
|
const { selected, deselected } = e
|
||||||
|
// [DEL-DRAG-FIX 2026-06-12] created 와 동일: 모듈 기본설정 메뉴에서는 module 우선으로 currentObject 설정
|
||||||
|
const selectedModules = selected?.filter((o) => o.name === POLYGON_TYPE.MODULE) ?? []
|
||||||
|
const target =
|
||||||
|
currentMenu === MENU.MODULE_CIRCUIT_SETTING.BASIC_SETTING && selectedModules.length > 0 ? selectedModules[0] : e.selected[0]
|
||||||
|
setCurrentObject(target)
|
||||||
|
|
||||||
if (deselected?.length > 0) {
|
if (deselected?.length > 0) {
|
||||||
deselected.forEach((obj) => {
|
deselected.forEach((obj) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user