Merge pull request '[1189_4] 드래그 박스 모듈 Del 삭제 불가 수정 — roof 복수선택 시 discardActiveObject 차단 + module 우선 currentObject 설정' (#913) from dev into dev-deploy
Reviewed-on: #913
This commit is contained in:
commit
932f6840c4
@ -196,9 +196,14 @@ export function useCanvasEvent() {
|
||||
|
||||
const selectionEvent = {
|
||||
created: (e) => {
|
||||
const target = e.selected[0]
|
||||
setCurrentObject(target)
|
||||
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) {
|
||||
selected.forEach((obj) => {
|
||||
@ -212,7 +217,12 @@ export function useCanvasEvent() {
|
||||
obj.set({ strokeWidth: 3 })
|
||||
}
|
||||
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 })
|
||||
}
|
||||
}
|
||||
@ -245,9 +255,12 @@ export function useCanvasEvent() {
|
||||
canvas.renderAll()
|
||||
},
|
||||
updated: (e) => {
|
||||
const target = e.selected[0]
|
||||
setCurrentObject(target)
|
||||
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) {
|
||||
deselected.forEach((obj) => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user