修复whiteboard新建元素时双击无法正常显示光标的问题

This commit is contained in:
jingrow 2026-05-06 13:08:41 +08:00
parent 788edf4cba
commit bded968efe

View File

@ -869,7 +869,8 @@ function startTextEdit(elementId: string): void {
}
// API canvas
// canvas padding=8px textarea padding transform
// wrapper padding-top:8px 使 textarea canvas padding
// transformY transform-origin:top textarea
if (renderer.value) {
const zoom = renderer.value.getViewport().zoom
const panX = renderer.value.getViewport().panX
@ -878,15 +879,12 @@ function startTextEdit(elementId: string): void {
const fontSize = s.fontSize ?? (isTextType ? 20 : 14)
const align = s.textAlign ?? (isTextType ? 'left' : 'center')
// textBounds.startY canvas baseline Y top
// textarea transform:translateY 使 canvas 线
// textarea top=0 top+padding alphabetic baseline = top+padding+fontSize
// textarea = canvas startY
// textarea top + padding = canvas startY - fontSize
// textarea transform transformY = canvas startY - fontSize
// transformY_screen = (canvas_startY - fontSize) * zoom
const canvasStartY = textBounds ? textBounds.startY - el.y : 0
const transformY = (canvasStartY - fontSize) * zoom
// wrapper padding-top:8pxtextarea canvas
// textarea alphabetic baseline + fontSize
// canvas padding baseline transform
// canvas startY = el.y + padding - fontSize/2 transformY = padding * zoom
const padding = 8
const transformY = padding * zoom
editTextPosition.value = {
x: el.x * zoom + panX,
@ -2150,12 +2148,14 @@ function handleResize(): void {
z-index: 20;
box-sizing: border-box;
overflow: hidden;
display: flex;
align-items: flex-start;
padding-top: 8px;
}
/* textarea wrapper paddingtransform
样式由 inline :style 同步 BoardRenderer */
.text-edit-overlay {
position: absolute;
top: 0;
position: relative;
left: 0;
width: 100%;
height: 100%;