From 50a06568d4bf6803fba4b79ba71b567761546425 Mon Sep 17 00:00:00 2001 From: Azure <983547216@qq.com> Date: Fri, 22 Aug 2025 15:49:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/desktop/ui/DesktopComponent.vue | 31 +++++++--------------- src/core/desktop/ui/components/AppIcon.vue | 8 +++++- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/core/desktop/ui/DesktopComponent.vue b/src/core/desktop/ui/DesktopComponent.vue index e64e6e3..0a1cfd2 100644 --- a/src/core/desktop/ui/DesktopComponent.vue +++ b/src/core/desktop/ui/DesktopComponent.vue @@ -3,11 +3,13 @@ :config-provider-props="configProviderProps" class="w-full h-full pos-relative" > -
-
- +
+
+
+ +
@@ -20,13 +22,10 @@ import XSystem from '@/core/XSystem.ts' import { notificationApi } from '@/core/common/naive-ui/discrete-api.ts' import { configProviderProps } from '@/core/common/naive-ui/theme.ts' import { DesktopEventEnum } from '@/core/events/EventTypes.ts' -import { useIconDrag } from '@/core/desktop/utils/useIconDrag.ts' -import type { IDesktopAppIcon } from '@/core/desktop/types/IDesktopAppIcon.ts' import { useDesktopInit } from '@/core/desktop/ui/useDesktopInit.ts' import AppIcon from '@/core/desktop/ui/components/AppIcon.vue' const props = defineProps<{ process: DesktopProcess }>() -// console.log(props.process) const { appIconsRef, gridStyle, gridTemplate } = useDesktopInit('.desktop-container') @@ -42,12 +41,8 @@ XSystem.instance.eventManages.addEventListener( }, ) -const iconsInit = () => { - const icons = document.querySelectorAll('div.icon-container') - const container = document.querySelector('.desktop-container')! - icons.forEach((icon: HTMLDivElement) => { - useIconDrag(icon, container) - }) +const onContextMenu = (e: MouseEvent) => { + e.preventDefault() } @@ -56,13 +51,7 @@ const iconsInit = () => { @apply w-full h-full flex flex-col; .desktop-container { - @apply w-full flex-1 grid grid-auto-flow-col pos-relative; - - .icon-container { - width: 100%; - height: 100%; - @apply flex flex-col items-center justify-center rounded bg-gray-200; - } + @apply w-full h-full flex-1 grid grid-auto-flow-col pos-relative; } .task-bar { diff --git a/src/core/desktop/ui/components/AppIcon.vue b/src/core/desktop/ui/components/AppIcon.vue index 625dec3..78b99d7 100644 --- a/src/core/desktop/ui/components/AppIcon.vue +++ b/src/core/desktop/ui/components/AppIcon.vue @@ -21,6 +21,12 @@ const onDragStart = (e: DragEvent) => {} const onDragEnd = (e: DragEvent) => { const el = e.target as HTMLElement | null if (!el) return + // 鼠标所在位置已存在图标元素 + const pointTarget = document.elementFromPoint(e.clientX, e.clientY) + if (!pointTarget) return + if (pointTarget.classList.contains('icon-container')) return + if (!pointTarget.classList.contains('desktop-container')) return + // 获取容器边界 const rect = el.parentElement!.getBoundingClientRect() @@ -31,7 +37,7 @@ const onDragEnd = (e: DragEvent) => { // 计算鼠标所在单元格坐标(向上取整,从1开始) const gridX = Math.ceil(mouseX / gridTemplate.cellRealWidth) const gridY = Math.ceil(mouseY / gridTemplate.cellRealHeight) - console.log(gridX, gridY) + icon.col = gridX icon.row = gridY }