707 생기는 현상 수정
This commit is contained in:
parent
ce3decb61c
commit
dd39e6f07b
@ -323,8 +323,11 @@ export function useUndoRedo() {
|
|||||||
const cells = roofs.filter((obj) => obj.cells && obj.cells.length > 0)
|
const cells = roofs.filter((obj) => obj.cells && obj.cells.length > 0)
|
||||||
setDrewRoofCells(cells)
|
setDrewRoofCells(cells)
|
||||||
|
|
||||||
// loadFromJSON 후 QPolygon/QLine 의 lengthText 가 orphan 제거되었을 수 있으므로 재생성
|
// loadFromJSON 후 QPolygon 의 내부 lines 배열은 plain object 로만 복원되므로
|
||||||
// (initLines 로 새 QLine 이 만들어지면 기존 lengthText 의 parentId 가 안 맞음)
|
// initLines() 로 실제 QLine 인스턴스를 재구축한다.
|
||||||
|
// (lengthText 는 JSON 에서 이미 복원되므로 재생성하지 않는다.
|
||||||
|
// 과거에는 addLengthText 도 함께 호출했으나, undo/redo 반복 시 숨겨진 모서리 라인의
|
||||||
|
// 텍스트가 누적 생성되어 "707" 같은 잔존 텍스트가 화면에 나타나는 문제가 있었음)
|
||||||
const shouldRebuildText = (poly) =>
|
const shouldRebuildText = (poly) =>
|
||||||
poly.type === 'QPolygon' &&
|
poly.type === 'QPolygon' &&
|
||||||
poly.name !== 'arrow' &&
|
poly.name !== 'arrow' &&
|
||||||
@ -336,11 +339,10 @@ export function useUndoRedo() {
|
|||||||
qPolygons.forEach((polygon) => {
|
qPolygons.forEach((polygon) => {
|
||||||
try {
|
try {
|
||||||
polygon.initLines()
|
polygon.initLines()
|
||||||
polygon.addLengthText()
|
|
||||||
} catch (e) { /* skip */ }
|
} catch (e) { /* skip */ }
|
||||||
})
|
})
|
||||||
|
|
||||||
// Group 내부 QPolygon(도머 등)의 lengthText 도 동일하게 재생성
|
// Group 내부 QPolygon(도머 등)도 동일하게 내부 라인 인스턴스만 재구축한다.
|
||||||
objects
|
objects
|
||||||
.filter((obj) => obj.type === 'group' && obj._objects)
|
.filter((obj) => obj.type === 'group' && obj._objects)
|
||||||
.forEach((group) => {
|
.forEach((group) => {
|
||||||
@ -349,21 +351,10 @@ export function useUndoRedo() {
|
|||||||
try {
|
try {
|
||||||
if (!child.canvas) child.canvas = canvas
|
if (!child.canvas) child.canvas = canvas
|
||||||
child.initLines?.()
|
child.initLines?.()
|
||||||
child.addLengthText?.()
|
|
||||||
} catch (e) { /* skip */ }
|
} catch (e) { /* skip */ }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
canvas.getObjects()
|
|
||||||
.filter((obj) => obj.type === 'QLine')
|
|
||||||
.forEach((line) => {
|
|
||||||
try {
|
|
||||||
if (typeof line.addLengthText === 'function') {
|
|
||||||
line.addLengthText()
|
|
||||||
}
|
|
||||||
} catch (e) { /* skip */ }
|
|
||||||
})
|
|
||||||
}, [canvas, rebuildObjectGraph])
|
}, [canvas, rebuildObjectGraph])
|
||||||
|
|
||||||
const restoreAtomSnapshot = useCallback((atomSnapshot) => {
|
const restoreAtomSnapshot = useCallback((atomSnapshot) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user