feat: 双击创建文本框(#218)

This commit is contained in:
pipipi-pikachu 2023-08-10 22:35:50 +08:00
parent dc73edc421
commit 4f9db4781a

View File

@ -4,6 +4,7 @@
ref="canvasRef"
@wheel="$event => handleMousewheelCanvas($event)"
@mousedown="$event => handleClickBlankArea($event)"
@dblclick="$event => handleDblClick($event)"
v-contextmenu="contextmenus"
v-click-outside="removeEditorAreaFocus"
>
@ -124,6 +125,7 @@ import useSelectAllElement from '@/hooks/useSelectAllElement'
import useScaleCanvas from '@/hooks/useScaleCanvas'
import useScreening from '@/hooks/useScreening'
import useSlideHandler from '@/hooks/useSlideHandler'
import useCreateElement from '@/hooks/useCreateElement'
import EditableElement from './EditableElement.vue'
import MouseSelection from './MouseSelection.vue'
@ -188,6 +190,7 @@ const { deleteAllElements } = useDeleteElement()
const { pasteElement } = useCopyAndPasteElement()
const { enterScreeningFromStart } = useScreening()
const { updateSlideIndex } = useSlideHandler()
const { createTextElement } = useCreateElement()
//
// 退
@ -209,6 +212,23 @@ const handleClickBlankArea = (e: MouseEvent) => {
removeAllRanges()
}
//
const handleDblClick = (e: MouseEvent) => {
if (activeElementIdList.value.length) return
if (!viewportRef.value) return
const viewportRect = viewportRef.value.getBoundingClientRect()
const left = (e.pageX - viewportRect.x) / canvasScale.value
const top = (e.pageY - viewportRect.y) / canvasScale.value
createTextElement({
left,
top,
width: 200 / canvasScale.value, // canvasScale
height: 0,
})
}
//
onUnmounted(() => {
if (textFormatPainter.value) mainStore.setTextFormatPainter(null)