diff --git a/src/views/Editor/Canvas/hooks/useScaleElement.ts b/src/views/Editor/Canvas/hooks/useScaleElement.ts index 8bfb5ab6..83686046 100644 --- a/src/views/Editor/Canvas/hooks/useScaleElement.ts +++ b/src/views/Editor/Canvas/hooks/useScaleElement.ts @@ -378,14 +378,15 @@ export default ( document.onmouseup = e => { isMouseDown = false - emitter.emit(EmitterEvents.SCALE_ELEMENT_STATE, false) document.onmousemove = null document.onmouseup = null alignmentLines.value = [] - + if(startPageX === e.pageX && startPageY === e.pageY) return - + store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value }) + emitter.emit(EmitterEvents.SCALE_ELEMENT_STATE, false) + addHistorySnapshot() } } diff --git a/src/views/components/element/TextElement/index.vue b/src/views/components/element/TextElement/index.vue index 601b5cdd..96befe8f 100644 --- a/src/views/components/element/TextElement/index.vue +++ b/src/views/components/element/TextElement/index.vue @@ -85,9 +85,23 @@ export default defineComponent({ const elementRef = ref(null) const isScaling = ref(false) + const realHeightCache = ref(-1) - emitter.on(EmitterEvents.SCALE_ELEMENT_STATE, state => { + const scaleElementStateListener = (state: boolean) => { isScaling.value = state + + if(!state && realHeightCache.value !== -1) { + store.commit(MutationTypes.UPDATE_ELEMENT, { + id: props.elementInfo.id, + props: { height: realHeightCache.value }, + }) + realHeightCache.value = -1 + } + } + + emitter.on(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state)) + onUnmounted(() => { + emitter.off(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state)) }) const updateTextElementHeight = (entries: ResizeObserverEntry[]) => { @@ -96,13 +110,14 @@ export default defineComponent({ const realHeight = contentRect.height - if(!isScaling.value) { - if(props.elementInfo.height !== realHeight) { + if(props.elementInfo.height !== realHeight) { + if(!isScaling.value) { store.commit(MutationTypes.UPDATE_ELEMENT, { id: props.elementInfo.id, props: { height: realHeight }, }) } + else realHeightCache.value = realHeight } } const resizeObserver = new ResizeObserver(updateTextElementHeight)