diff --git a/src/apps/vcoder/entry/src/main/ets/entryability/EntryAbility.ets b/src/apps/vcoder/entry/src/main/ets/entryability/EntryAbility.ets index 55abe1ba..5d4c850f 100644 --- a/src/apps/vcoder/entry/src/main/ets/entryability/EntryAbility.ets +++ b/src/apps/vcoder/entry/src/main/ets/entryability/EntryAbility.ets @@ -142,7 +142,8 @@ export default class EntryAbility extends RustAbility { }); setTimeout(() => { windowStage.getMainWindow((err, data) => { - data.setWindowDecorHeight(44) + data.setWindowDecorHeight(44); + data.setWindowTitleMoveEnabled(false); data.setWindowDecorVisible(false); }) }, 40) diff --git a/src/web-ui/src/app/components/NavBar/NavBar.tsx b/src/web-ui/src/app/components/NavBar/NavBar.tsx index a9e08cff..4ffcc1fd 100644 --- a/src/web-ui/src/app/components/NavBar/NavBar.tsx +++ b/src/web-ui/src/app/components/NavBar/NavBar.tsx @@ -16,7 +16,7 @@ import { useNavSceneStore } from '../../stores/navSceneStore'; import { useI18n } from '../../../infrastructure/i18n'; import { PanelLeftIcon } from '../TitleBar/PanelIcons'; import { createLogger } from '@/shared/utils/logger'; -import { isMacOSDesktopRuntime, supportsNativeWindowDragging } from '@/infrastructure/runtime'; +import { isMacOSDesktopRuntime } from '@/infrastructure/runtime'; import './NavBar.scss'; import { workspaceAPI } from '@/infrastructure'; @@ -42,36 +42,32 @@ const NavBar: React.FC = ({ const isMacOS = useMemo(() => { return isMacOSDesktopRuntime(); }, []); - const canDragWindow = supportsNativeWindowDragging(); const showSceneNav = useNavSceneStore(s => s.showSceneNav); - const navSceneId = useNavSceneStore(s => s.navSceneId); - const goBack = useNavSceneStore(s => s.goBack); - const goForward = useNavSceneStore(s => s.goForward); - const canGoBack = showSceneNav && !!navSceneId; + const navSceneId = useNavSceneStore(s => s.navSceneId); + const goBack = useNavSceneStore(s => s.goBack); + const goForward = useNavSceneStore(s => s.goForward); + const canGoBack = showSceneNav && !!navSceneId; const canGoForward = !showSceneNav && !!navSceneId; - const lastMouseDownTimeRef = useRef(0); + const isDraggingRef = useRef(false); - const handleBarMouseDown = useCallback((e: React.MouseEvent) => { - if (!canDragWindow) return; + const handleBarMouseDown = (() => { + isDraggingRef.current = true; + }) - const now = Date.now(); - const timeSinceLastMouseDown = now - lastMouseDownTimeRef.current; - lastMouseDownTimeRef.current = now; - - if (e.button !== 0) return; - const target = e.target as HTMLElement | null; - if (!target) return; - if (target.closest(INTERACTIVE_SELECTOR)) return; - if (timeSinceLastMouseDown < 500 && timeSinceLastMouseDown > 50) return; - - void (async () => { + const handleBarMouseMove = async () => { + if (isDraggingRef.current) { try { await workspaceAPI.window_start_dragging(); } catch (error) { log.debug('startDragging failed', error); } - })(); - }, [canDragWindow]); + } + + }; + + const handlebarMouseUp = (() => { + isDraggingRef.current = false; + }); const handleBarDoubleClick = useCallback((e: React.MouseEvent) => { const target = e.target as HTMLElement | null; @@ -84,7 +80,7 @@ const NavBar: React.FC = ({ if (isCollapsed) { return ( -
+