diff --git a/src/assets/css/main.css b/src/assets/css/main.css index 5434072..2c7fa63 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -18,3 +18,8 @@ :root { --ui-header-height: 74px; } + +.swiper-slide { + isolation: isolate; /* Für jeden Slide */ + contain: layout style; /* Enthält den Context, ohne Performance-Hit */ +} diff --git a/src/components/haex/desktop/index.vue b/src/components/haex/desktop/index.vue index 9dc46fb..2723e9a 100644 --- a/src/components/haex/desktop/index.vue +++ b/src/components/haex/desktop/index.vue @@ -1,8 +1,7 @@ @@ -471,7 +470,6 @@ const handleDesktopClick = () => { } desktopStore.clearSelection() - isOverviewMode.value = false } diff --git a/src/components/haex/desktop/window.vue b/src/components/haex/desktop/window.vue index d5ff8fc..e96fc44 100644 --- a/src/components/haex/desktop/window.vue +++ b/src/components/haex/desktop/window.vue @@ -3,9 +3,10 @@ ref="windowEl" :style="windowStyle" :class="[ - 'absolute bg-white/80 dark:bg-gray-900/80 backdrop-blur-xl rounded-xl shadow-2xl overflow-hidden', + 'absolute backdrop-blur-xl rounded-xl shadow-2xl overflow-hidden', 'border border-gray-200 dark:border-gray-700 transition-all ease-out duration-600', 'flex flex-col', + isActive ? 'z-50' : 'z-10', ]" @mousedown="handleActivate" @@ -74,8 +75,8 @@
@@ -84,35 +85,35 @@ @@ -466,6 +467,7 @@ useEventListener(window, 'mousemove', (e: MouseEvent) => { // Global mouse up handler (for resizing only, dragging handled by useDrag) useEventListener(window, 'mouseup', () => { if (isResizing.value) { + globalThis.getSelection()?.removeAllRanges() isResizing.value = false // Snap back to viewport after resize ends diff --git a/src/components/haex/extension/launcher.vue b/src/components/haex/extension/launcher.vue index 4d685ec..e0e1c68 100644 --- a/src/components/haex/extension/launcher.vue +++ b/src/components/haex/extension/launcher.vue @@ -5,7 +5,7 @@ color="neutral" variant="outline" v-bind="$attrs" - size="xl" + size="lg" /> diff --git a/src/stores/desktop/windowManager.ts b/src/stores/desktop/windowManager.ts index edca67c..32fc521 100644 --- a/src/stores/desktop/windowManager.ts +++ b/src/stores/desktop/windowManager.ts @@ -41,6 +41,18 @@ export const useWindowManagerStore = defineStore('windowManager', () => { // System Windows Registry const systemWindows: Record = { + developer: { + id: 'developer', + name: 'Developer', + icon: 'i-hugeicons-developer', + component: defineAsyncComponent( + () => import('@/components/haex/system/developer.vue'), + ) as Component, + defaultWidth: 800, + defaultHeight: 600, + resizable: true, + singleton: true, + }, settings: { id: 'settings', name: 'Settings', @@ -169,8 +181,15 @@ export const useWindowManagerStore = defineStore('windowManager', () => { const viewportWidth = window.innerWidth const viewportHeight = window.innerHeight - const windowWidth = width > viewportWidth ? viewportWidth : width - const windowHeight = height > viewportHeight ? viewportHeight : height + const windowHeight = Math.min(height, viewportHeight) + + // Adjust width proportionally if needed (optional) + const aspectRatio = width / height + const windowWidth = Math.min( + width, + viewportWidth, + windowHeight * aspectRatio, + ) // Calculate centered position with cascading offset (only count windows in current workspace) const offset = currentWorkspaceWindows.value.length * 30