From 26081ea5cce0b18ccbe360259eae2f343021d753 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Mon, 30 May 2022 21:13:15 +0800 Subject: [PATCH] =?UTF-8?q?fix(editor):=20=E5=8F=B3=E9=94=AE=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E7=B2=98=E8=B4=B4=E7=9A=84=E7=BB=84=E4=BB=B6=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E4=B8=8D=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/src/layouts/workspace/ViewerMenu.vue | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/editor/src/layouts/workspace/ViewerMenu.vue b/packages/editor/src/layouts/workspace/ViewerMenu.vue index f0a12772..43dd58e2 100644 --- a/packages/editor/src/layouts/workspace/ViewerMenu.vue +++ b/packages/editor/src/layouts/workspace/ViewerMenu.vue @@ -69,8 +69,20 @@ export default defineComponent({ text: '粘贴', display: () => canPaste.value, handler: () => { - const top = menu.value?.$el.offsetTop || 0; - const left = menu.value?.$el.offsetLeft || 0; + const stage = editorService?.get('stage'); + + const rect = menu.value?.$el.getBoundingClientRect(); + const parentRect = stage?.container?.getBoundingClientRect(); + let left = (rect?.left || 0) - (parentRect?.left || 0); + let top = (rect?.top || 0) - (parentRect?.top || 0); + + if (node.value?.items && stage) { + const parentEl = stage.renderer.contentWindow?.document.getElementById(`${node.value.id}`); + const parentElRect = parentEl?.getBoundingClientRect(); + left = left - (parentElRect?.left || 0); + top = top - (parentElRect?.top || 0); + } + editorService?.paste({ left, top }); }, },