From 02bde2a90da63edcb3871647074368162ed73795 Mon Sep 17 00:00:00 2001 From: tibssy Date: Fri, 20 Feb 2026 19:12:04 +0000 Subject: [PATCH 1/3] fix(dock): ensure frame indicator correctly fills the trigger area --- Modules/Dock/Dock.qml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Modules/Dock/Dock.qml b/Modules/Dock/Dock.qml index 61cd9f6f4..050fc11bf 100644 --- a/Modules/Dock/Dock.qml +++ b/Modules/Dock/Dock.qml @@ -648,9 +648,7 @@ Loader { implicitWidth: isVertical ? ((showFrameIndicator || barAtSameEdge) ? indicatorThickness : peekHeight) : peekEdgeLength Rectangle { - anchors.centerIn: parent - width: isVertical ? indicatorThickness : frameIndicatorLength - height: isVertical ? frameIndicatorLength : indicatorThickness + anchors.fill: parent radius: indicatorThickness color: Qt.alpha(Color.mPrimary, 0.6) opacity: showFrameIndicator && frameIndicatorLength > 0 ? 1 : 0 From a1aeeb116fe842c393bb52f5e4693200253db601 Mon Sep 17 00:00:00 2001 From: tibssy Date: Fri, 20 Feb 2026 19:20:40 +0000 Subject: [PATCH 2/3] fix(dock): adjust centering logic to account for bar dimensions and margins --- Modules/Dock/Dock.qml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Modules/Dock/Dock.qml b/Modules/Dock/Dock.qml index 050fc11bf..4e69f3f50 100644 --- a/Modules/Dock/Dock.qml +++ b/Modules/Dock/Dock.qml @@ -94,6 +94,11 @@ Loader { // Bar detection and positioning properties readonly property bool hasBar: modelData && modelData.name ? (Settings.data.bar.monitors.includes(modelData.name) || (Settings.data.bar.monitors.length === 0)) : false readonly property bool barAtSameEdge: hasBar && Settings.getBarPositionForScreen(modelData?.name) === dockPosition + readonly property string barPosition: Settings.getBarPositionForScreen(modelData?.name) + readonly property bool barIsVertical: barPosition === "left" || barPosition === "right" + readonly property bool barIsFramed: Settings.data.bar.barType === "framed" && hasBar + readonly property real barMarginH: Settings.data.bar.floating ? Math.ceil(Settings.data.bar.marginHorizontal) : 0 + readonly property real barMarginV: Settings.data.bar.floating ? Math.ceil(Settings.data.bar.marginVertical) : 0 readonly property int barHeight: Style.getBarHeightForScreen(modelData?.name) readonly property int peekEdgeLength: { const edgeSize = isVertical ? Math.round(modelData?.height || maxHeight) : Math.round(modelData?.width || maxWidth); @@ -104,12 +109,34 @@ Loader { if (isVertical) return 0; const edgeSize = Math.round(modelData?.width || maxWidth); + if (barIsVertical) { + if (barPosition === "left") { + const availableStart = (barIsFramed ? 0 : barMarginH) + barHeight; + const availableWidth = edgeSize - availableStart - (barIsFramed ? Settings.data.bar.frameThickness : 0); + return Math.max(0, Math.round(availableStart + (availableWidth - peekEdgeLength) / 2)); + } + if (barPosition === "right") { + const availableWidth = edgeSize - (barIsFramed ? 0 : barMarginH) - barHeight - (barIsFramed ? Settings.data.bar.frameThickness : 0); + return Math.max(0, Math.round((barIsFramed ? Settings.data.bar.frameThickness : 0) + (availableWidth - peekEdgeLength) / 2)); + } + } return Math.max(0, Math.round((edgeSize - peekEdgeLength) / 2)); } readonly property int peekCenterOffsetY: { if (!isVertical) return 0; const edgeSize = Math.round(modelData?.height || maxHeight); + if (!barIsVertical) { + if (barPosition === "top") { + const availableStart = (barIsFramed ? 0 : barMarginV) + barHeight; + const availableHeight = edgeSize - availableStart - (barIsFramed ? Settings.data.bar.frameThickness : 0); + return Math.max(0, Math.round(availableStart + (availableHeight - peekEdgeLength) / 2)); + } + if (barPosition === "bottom") { + const availableHeight = edgeSize - (barIsFramed ? 0 : barMarginV) - barHeight - (barIsFramed ? Settings.data.bar.frameThickness : 0); + return Math.max(0, Math.round((barIsFramed ? Settings.data.bar.frameThickness : 0) + (availableHeight - peekEdgeLength) / 2)); + } + } return Math.max(0, Math.round((edgeSize - peekEdgeLength) / 2)); } readonly property bool showFrameIndicator: { From 3d8de774536645454a3154d28f2ff77b84d9d38e Mon Sep 17 00:00:00 2001 From: tibssy Date: Fri, 20 Feb 2026 19:42:17 +0000 Subject: [PATCH 3/3] fix(dock): dynamically adjust tooltip direction based on dock position --- Modules/Dock/DockContent.qml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Modules/Dock/DockContent.qml b/Modules/Dock/DockContent.qml index 801870757..9368f826e 100644 --- a/Modules/Dock/DockContent.qml +++ b/Modules/Dock/DockContent.qml @@ -19,6 +19,7 @@ Item { required property int extraRight property alias dockContainer: dockContainer readonly property bool isStaticMode: Settings.data.dock.dockType === "static" + readonly property string tooltipDirection: dockRoot.dockPosition === "top" ? "bottom" : "top" Rectangle { id: dockContainer @@ -288,7 +289,7 @@ Item { onEntered: { dockRoot.anyAppHovered = true; - TooltipService.show(launcherButton, I18n.tr("actions.open-launcher"), "top"); + TooltipService.show(launcherButton, I18n.tr("actions.open-launcher"), tooltipDirection); if (dockRoot.autoHide) { dockRoot.showTimer.stop(); dockRoot.hideTimer.stop(); @@ -664,7 +665,7 @@ Item { const appName = appButton.appTitle || appButton.appId || "Unknown"; const tooltipText = appName.length > 40 ? appName.substring(0, 37) + "..." : appName; if (!contextMenu.visible) { - TooltipService.show(appButton, tooltipText, "top"); + TooltipService.show(appButton, tooltipText, tooltipDirection); } if (dockRoot.autoHide) { dockRoot.showTimer.stop();