From 40ab74a9e0d4f39d507bca54e085988dc5e32f0f Mon Sep 17 00:00:00 2001 From: Jz0ojiang Date: Sat, 5 Sep 2026 18:09:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=85=A8=E7=AA=97=E5=8F=A3=E6=8B=96?= =?UTF-8?q?=E6=94=BE=E6=90=AC=E5=87=BA=20SourcePanel=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E5=88=B0=20App=20=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 拖放原来挂在 SourcePanel 的 window 监听上,前提是那个面板常驻挂载。右栏改成 按选中显示之后前提不成立,拖图进来会静默失效。抽成 useFileDrop,由 App 挂一次, 和右栏显示什么解耦,并补上拖入时的提示遮罩。 --- src/App.vue | 41 +++++++++++- src/editor/useFileDrop.ts | 128 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 src/editor/useFileDrop.ts diff --git a/src/App.vue b/src/App.vue index c5f130d..dda2257 100644 --- a/src/App.vue +++ b/src/App.vue @@ -8,6 +8,7 @@ import BottomDock from "./components/BottomDock.vue"; import SelectionMenu from "./components/SelectionMenu.vue"; import ContextMenu from "./components/ContextMenu.vue"; import { useShortcuts } from "./editor/useShortcuts"; +import { useFileDrop } from "./editor/useFileDrop"; /** * Figma 式布局:顶部工具栏 / 左侧图层 / 中间画布 / 右侧属性 / 底部悬浮胶囊。 @@ -17,8 +18,12 @@ import { useShortcuts } from "./editor/useShortcuts"; * 它们放在 .stage 里而不是 grid 的格子里,就是这个原因。 * * **这个文件由主控独占**,并行开发期间各线只实现自己那个组件。 + * + * 全窗口拖放在这里挂一次:它原来长在 SourcePanel 里,靠那个面板常驻挂载才收得到 + * window 事件;右栏改成按选中显示之后那个前提没了,所以提到 App 这一层。 */ useShortcuts(); +const { dragging, notice } = useFileDrop();