모듈/가대 설정 undo, redo 이상 동작 수정

This commit is contained in:
hyojun.choi 2026-05-20 15:30:52 +09:00
parent de5b9f1fb7
commit 37a1c24667
2 changed files with 13 additions and 1 deletions

View File

@ -1,5 +1,5 @@
import { useEffect, useState } from 'react'
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'
import { useRecoilState, useRecoilValue, useResetRecoilState, useSetRecoilState } from 'recoil'
import {
canvasSettingState,
@ -40,12 +40,14 @@ export function useModuleBasicSetting(tabNum) {
const { getMessage } = useMessage()
const roofDisplay = useRecoilValue(roofDisplaySelector)
const [moduleSetupSurface, setModuleSetupSurface] = useRecoilState(moduleSetupSurfaceState)
const resetModuleSetupSurface = useResetRecoilState(moduleSetupSurfaceState)
const { addCanvasMouseEventListener, initEvent, removeMouseEvent, addTargetMouseEventListener } = useEvent()
const { swalFire } = useSwal()
const compasDeg = useRecoilValue(compasDegAtom)
const { setSurfaceShapePattern } = useRoofFn()
const checkedModule = useRecoilValue(checkedModuleState)
const [isManualModuleSetup, setIsManualModuleSetup] = useRecoilState(isManualModuleSetupState)
const [isManualModuleLayoutSetup, setIsManualModuleLayoutSetup] = useRecoilState(isManualModuleLayoutSetupState)
const canvasSetting = useRecoilValue(canvasSettingState)
const moduleSelectionData = useRecoilValue(moduleSelectionDataState)
@ -67,6 +69,7 @@ export function useModuleBasicSetting(tabNum) {
useEffect(() => {
initEvent()
resetModuleSetupSurface()
return () => {
//수동 설치시 초기화
removeMouseEvent('mouse:up')

View File

@ -69,6 +69,15 @@ function _restoreFromJSON(canvas, snapshot, restoreAtomSnapshot, rebuildCanvasAt
canvas.loadFromJSON(snapshot.canvasJSON, () => {
rebuildCanvasAtoms()
// undo/redo 후 모듈 설치영역이 active 인 채로 남으면
// 사용자가 다시 클릭하지 않아도 선택된 것처럼 보여 자동 배치 등 부작용 발생.
// 활성 객체가 MODULE_SETUP_SURFACE 이면 선택 해제한다.
const active = canvas.getActiveObject()
if (active && active.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) {
canvas.discardActiveObject()
}
canvas.renderAll()
restoreAtomSnapshot(snapshot.atomSnapshot)