From ceb2eec80e598b613ab8a2135b82621f33c73c4f Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Wed, 13 Aug 2025 09:03:24 +0400 Subject: [PATCH] refactor: don't close dialog on drag --- src/components/ui/dialog.tsx | 6 ++++++ src/components/window-drag-area.tsx | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx index d677e7b..f3b27c0 100644 --- a/src/components/ui/dialog.tsx +++ b/src/components/ui/dialog.tsx @@ -63,6 +63,12 @@ function DialogContent({ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-[10000] grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className, )} + onInteractOutside={(event) => { + const target = event.target as HTMLElement | null; + if (target?.closest('[data-window-drag-area="true"]')) { + event.preventDefault(); + } + }} {...props} > {children} diff --git a/src/components/window-drag-area.tsx b/src/components/window-drag-area.tsx index 7879144..1378e4b 100644 --- a/src/components/window-drag-area.tsx +++ b/src/components/window-drag-area.tsx @@ -16,11 +16,11 @@ export function WindowDragArea() { checkPlatform(); }, []); - const handleMouseDown = (e: React.MouseEvent) => { - // Only handle left mouse button + const handlePointerDown = (e: React.PointerEvent) => { if (e.button !== 0) return; + e.preventDefault(); + e.stopPropagation(); - // Start dragging asynchronously const startDrag = async () => { try { const window = getCurrentWindow(); @@ -42,7 +42,8 @@ export function WindowDragArea() {