From a7457c57c081511ec848d1ba3a44095b9d0d4ceb Mon Sep 17 00:00:00 2001 From: zach Date: Sat, 18 Apr 2026 00:15:52 +0200 Subject: [PATCH] dock settings work now woo --- Drawers/Interactions.qml | 8 ++- .../Settings/Controls/WallpaperCropper.qml | 54 +++++++++---------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/Drawers/Interactions.qml b/Drawers/Interactions.qml index 6d6ae56..e09228f 100644 --- a/Drawers/Interactions.qml +++ b/Drawers/Interactions.qml @@ -54,7 +54,7 @@ CustomMouseArea { anchors.fill: parent cursorShape: (pressed && dragStart.y < bar.implicitHeight) ? Qt.ClosedHandCursor : undefined hoverEnabled: true - propagateComposedEvents: true + propagateComposedEvents: false onContainsMouseChanged: { if (!containsMouse) { @@ -92,6 +92,10 @@ CustomMouseArea { visibilities.settings = false; } + if (Config.dock.hoverToReveal && pressed && dragStart.y > root.screen.height - root.bar.implicitHeight) + if (dragY < -10) + visibilities.dock = true; + if (panels.sidebar.width === 0) { const showOsd = inRightPanel(panels.osd, x, y); @@ -112,7 +116,7 @@ CustomMouseArea { } } - if (!visibilities.dock && !visibilities.launcher && inBottomPanel(panels.dock, x, y)) + if (Config.dock.enable && !Config.dock.hoverToReveal && !visibilities.dock && !visibilities.launcher && inBottomPanel(panels.dock, x, y)) visibilities.dock = true; if (y < root.bar.implicitHeight) { diff --git a/Modules/Settings/Controls/WallpaperCropper.qml b/Modules/Settings/Controls/WallpaperCropper.qml index ee355a8..d0f5faa 100644 --- a/Modules/Settings/Controls/WallpaperCropper.qml +++ b/Modules/Settings/Controls/WallpaperCropper.qml @@ -9,15 +9,16 @@ import qs.Helpers ColumnLayout { id: root - width: Math.min(parent ? parent.width : 600, 600) spacing: 15 + width: Math.min(parent ? parent.width : 600, 600) Rectangle { id: previewContainer - Layout.fillWidth: true - Layout.preferredHeight: width * (Quickshell.screens.length > 0 ? (Quickshell.screens[0].height / Math.max(1, Quickshell.screens[0].width)) : 9/16) + + Layout.fillHeight: true + Layout.preferredWidth: height * (Quickshell.screens.length > 0 ? (Quickshell.screens[0].height / Math.max(1, Quickshell.screens[0].width)) : 16 / 9) clip: true - color: DynamicColors.surfaceContainer + color: DynamicColors.palette.m3surfaceContainer radius: Config.appearance.rounding.scale * 10 Image { @@ -30,51 +31,50 @@ ColumnLayout { Rectangle { id: cropRect - - property real paintedWidth: img.paintedWidth > 0 ? img.paintedWidth : img.width + + property real cropHeight: (imageAspect > screenAspect ? paintedHeight : paintedWidth / screenAspect) / Config.background.zoom + property real cropWidth: (imageAspect > screenAspect ? paintedHeight * screenAspect : paintedWidth) / Config.background.zoom + property real imageAspect: Math.max(1, paintedWidth) / Math.max(1, paintedHeight) property real paintedHeight: img.paintedHeight > 0 ? img.paintedHeight : img.height + property real paintedWidth: img.paintedWidth > 0 ? img.paintedWidth : img.width property real paintedX: (img.width - paintedWidth) / 2 property real paintedY: (img.height - paintedHeight) / 2 - - property real screenAspect: Quickshell.screens.length > 0 ? (Quickshell.screens[0].width / Math.max(1, Quickshell.screens[0].height)) : 16/9 - property real imageAspect: Math.max(1, paintedWidth) / Math.max(1, paintedHeight) - - property real cropWidth: (imageAspect > screenAspect ? paintedHeight * screenAspect : paintedWidth) / Config.background.zoom - property real cropHeight: (imageAspect > screenAspect ? paintedHeight : paintedWidth / screenAspect) / Config.background.zoom - - border.color: DynamicColors.primary + property real screenAspect: Quickshell.screens.length > 0 ? (Quickshell.screens[0].width / Math.max(1, Quickshell.screens[0].height)) : 16 / 9 + + border.color: DynamicColors.palette.m3primary border.width: 2 - color: DynamicColors.primaryContainer.withAlpha(0.3) - - width: cropWidth + color: Qt.alpha(DynamicColors.palette.m3primaryContainer, 0.3) height: cropHeight - + width: cropWidth x: paintedX + (paintedWidth - width) * Config.background.alignX y: paintedY + (paintedHeight - height) * Config.background.alignY - + DragHandler { target: null + onActiveTranslationChanged: { if (active) { let newX = cropRect.x - cropRect.paintedX + translation.x; let newY = cropRect.y - cropRect.paintedY + translation.y; - + let rangeX = cropRect.paintedWidth - cropRect.width; let rangeY = cropRect.paintedHeight - cropRect.height; - + if (rangeX > 0) { let valX = newX / rangeX; Config.background.alignX = Math.max(0.0, Math.min(1.0, valX)); + Config.save(); } - + if (rangeY > 0) { let valY = newY / rangeY; Config.background.alignY = Math.max(0.0, Math.min(1.0, valY)); + Config.save(); } } } } - + PinchHandler { maximumScale: 5.0 minimumScale: 1.0 @@ -90,13 +90,13 @@ ColumnLayout { } } } - + SettingSpinBox { + max: 5.0 + min: 1.0 name: "Zoom" object: Config.background setting: "zoom" - min: 1.0 - max: 5.0 step: 0.1 } -} \ No newline at end of file +}