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" ref="canvasRef"
@wheel="$event => handleMousewheelCanvas($event)" @wheel="$event => handleMousewheelCanvas($event)"
@mousedown="$event => handleClickBlankArea($event)" @mousedown="$event => handleClickBlankArea($event)"
@dblclick="$event => handleDblClick($event)"
v-contextmenu="contextmenus" v-contextmenu="contextmenus"
v-click-outside="removeEditorAreaFocus" v-click-outside="removeEditorAreaFocus"
> >
@ -124,6 +125,7 @@ import useSelectAllElement from '@/hooks/useSelectAllElement'
import useScaleCanvas from '@/hooks/useScaleCanvas' import useScaleCanvas from '@/hooks/useScaleCanvas'
import useScreening from '@/hooks/useScreening' import useScreening from '@/hooks/useScreening'
import useSlideHandler from '@/hooks/useSlideHandler' import useSlideHandler from '@/hooks/useSlideHandler'
import useCreateElement from '@/hooks/useCreateElement'
import EditableElement from './EditableElement.vue' import EditableElement from './EditableElement.vue'
import MouseSelection from './MouseSelection.vue' import MouseSelection from './MouseSelection.vue'
@ -188,6 +190,7 @@ const { deleteAllElements } = useDeleteElement()
const { pasteElement } = useCopyAndPasteElement() const { pasteElement } = useCopyAndPasteElement()
const { enterScreeningFromStart } = useScreening() const { enterScreeningFromStart } = useScreening()
const { updateSlideIndex } = useSlideHandler() const { updateSlideIndex } = useSlideHandler()
const { createTextElement } = useCreateElement()
// //
// 退 // 退
@ -209,6 +212,23 @@ const handleClickBlankArea = (e: MouseEvent) => {
removeAllRanges() 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(() => { onUnmounted(() => {
if (textFormatPainter.value) mainStore.setTextFormatPainter(null) if (textFormatPainter.value) mainStore.setTextFormatPainter(null)