From 35e7e34ebf28d521b026fe0289817c6e46e09ec3 Mon Sep 17 00:00:00 2001 From: ItsLemmy Date: Sun, 7 Dec 2025 08:17:19 -0500 Subject: [PATCH] Bar: ceil all floating margins and increase the exclusion zone by one extra pixel to avoid potential cut-off. --- Modules/MainScreen/BarContentWindow.qml | 4 ++-- Modules/MainScreen/BarExclusionZone.qml | 12 ++++++------ Modules/MainScreen/MainScreen.qml | 4 ++-- Modules/MainScreen/SmartPanel.qml | 4 ++-- Modules/Notification/Notification.qml | 8 ++++---- Modules/OSD/OSD.qml | 2 +- Modules/Panels/Settings/SettingsPanel.qml | 4 ++-- Modules/Panels/Settings/Tabs/BarTab.qml | 2 +- Modules/Toast/ToastScreen.qml | 8 ++++---- 9 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Modules/MainScreen/BarContentWindow.qml b/Modules/MainScreen/BarContentWindow.qml index 51471aad1..b7d0cd1cb 100644 --- a/Modules/MainScreen/BarContentWindow.qml +++ b/Modules/MainScreen/BarContentWindow.qml @@ -33,8 +33,8 @@ PanelWindow { readonly property string barPosition: Settings.data.bar.position || "top" readonly property bool barIsVertical: barPosition === "left" || barPosition === "right" readonly property bool barFloating: Settings.data.bar.floating || false - readonly property real barMarginH: Math.round(barFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0) - readonly property real barMarginV: Math.round(barFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0) + readonly property real barMarginH: Math.ceil(barFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0) + readonly property real barMarginV: Math.ceil(barFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0) // Anchor to the bar's edge anchors { diff --git a/Modules/MainScreen/BarExclusionZone.qml b/Modules/MainScreen/BarExclusionZone.qml index c45618885..7398cdad2 100644 --- a/Modules/MainScreen/BarExclusionZone.qml +++ b/Modules/MainScreen/BarExclusionZone.qml @@ -17,8 +17,8 @@ PanelWindow { readonly property string barPosition: Settings.data.bar.position || "top" readonly property bool barIsVertical: barPosition === "left" || barPosition === "right" readonly property bool barFloating: Settings.data.bar.floating || false - readonly property real barMarginH: barFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0 - readonly property real barMarginV: barFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0 + readonly property real barMarginH: barFloating ? Math.ceil(Settings.data.bar.marginHorizontal * Style.marginXL) : 0 + readonly property real barMarginV: barFloating ? Math.ceil(Settings.data.bar.marginVertical * Style.marginXL) : 0 // Invisible - just reserves space color: "transparent" @@ -45,9 +45,9 @@ PanelWindow { // Vertical bar: reserve bar height + margin on the anchored edge only if (barFloating) { // For left bar, reserve left margin; for right bar, reserve right margin - return Style.barHeight + barMarginH; + return Style.barHeight + barMarginH + 1; } - return Style.barHeight; + return Style.barHeight + 1; } return 0; // Auto-width when left/right anchors are true } @@ -57,9 +57,9 @@ PanelWindow { // Horizontal bar: reserve bar height + margin on the anchored edge only if (barFloating) { // For top bar, reserve top margin; for bottom bar, reserve bottom margin - return Style.barHeight + barMarginV; + return Style.barHeight + barMarginV + 1; } - return Style.barHeight; + return Style.barHeight + 1; } return 0; // Auto-height when top/bottom anchors are true } diff --git a/Modules/MainScreen/MainScreen.qml b/Modules/MainScreen/MainScreen.qml index afa9fe54c..534a9d5ab 100644 --- a/Modules/MainScreen/MainScreen.qml +++ b/Modules/MainScreen/MainScreen.qml @@ -325,8 +325,8 @@ PanelWindow { readonly property string barPosition: Settings.data.bar.position || "top" readonly property bool barIsVertical: barPosition === "left" || barPosition === "right" readonly property bool barFloating: Settings.data.bar.floating || false - readonly property real barMarginH: barFloating ? Math.round(Settings.data.bar.marginHorizontal * Style.marginXL) : 0 - readonly property real barMarginV: barFloating ? Math.round(Settings.data.bar.marginVertical * Style.marginXL) : 0 + readonly property real barMarginH: barFloating ? Math.ceil(Settings.data.bar.marginHorizontal * Style.marginXL) : 0 + readonly property real barMarginV: barFloating ? Math.ceil(Settings.data.bar.marginVertical * Style.marginXL) : 0 readonly property real attachmentOverlap: 1 // Attachment overlap to fix hairline gap with fractional scaling // Expose bar dimensions directly on this Item for BarBackground diff --git a/Modules/MainScreen/SmartPanel.qml b/Modules/MainScreen/SmartPanel.qml index 9df149f4f..09a02c1d6 100644 --- a/Modules/MainScreen/SmartPanel.qml +++ b/Modules/MainScreen/SmartPanel.qml @@ -82,8 +82,8 @@ Item { readonly property string barPosition: Settings.data.bar.position readonly property bool barIsVertical: barPosition === "left" || barPosition === "right" readonly property bool barFloating: Settings.data.bar.floating - readonly property real barMarginH: barFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0 - readonly property real barMarginV: barFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0 + readonly property real barMarginH: barFloating ? Math.ceil(Settings.data.bar.marginHorizontal * Style.marginXL) : 0 + readonly property real barMarginV: barFloating ? Math.ceil(Settings.data.bar.marginVertical * Style.marginXL) : 0 // Check if bar should be visible on this screen readonly property bool barShouldShow: { diff --git a/Modules/Notification/Notification.qml b/Modules/Notification/Notification.qml index fcf8af5fc..67700628f 100644 --- a/Modules/Notification/Notification.qml +++ b/Modules/Notification/Notification.qml @@ -67,28 +67,28 @@ Variants { readonly property int barOffsetTop: { if (barPos !== "top") return 0; - const floatMarginV = isFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0; + const floatMarginV = isFloating ? Math.ceil(Settings.data.bar.marginVertical * Style.marginXL) : 0; return Style.barHeight + floatMarginV; } readonly property int barOffsetBottom: { if (barPos !== "bottom") return 0; - const floatMarginV = isFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0; + const floatMarginV = isFloating ? Math.ceil(Settings.data.bar.marginVertical * Style.marginXL) : 0; return Style.barHeight + floatMarginV; } readonly property int barOffsetLeft: { if (barPos !== "left") return 0; - const floatMarginH = isFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0; + const floatMarginH = isFloating ? Math.ceil(Settings.data.bar.marginHorizontal * Style.marginXL) : 0; return Style.barHeight + floatMarginH; } readonly property int barOffsetRight: { if (barPos !== "right") return 0; - const floatMarginH = isFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0; + const floatMarginH = isFloating ? Math.ceil(Settings.data.bar.marginHorizontal * Style.marginXL) : 0; return Style.barHeight + floatMarginH; } diff --git a/Modules/OSD/OSD.qml b/Modules/OSD/OSD.qml index 9763b9c06..d89847070 100644 --- a/Modules/OSD/OSD.qml +++ b/Modules/OSD/OSD.qml @@ -419,7 +419,7 @@ Variants { let base = Style.marginM; if (Settings.data.bar.position === position) { const isVertical = position === "top" || position === "bottom"; - const floatExtra = Settings.data.bar.floating ? (isVertical ? Settings.data.bar.marginVertical : Settings.data.bar.marginHorizontal) * Style.marginXL : 0; + const floatExtra = Math.ceil(Settings.data.bar.floating ? (isVertical ? Settings.data.bar.marginVertical : Settings.data.bar.marginHorizontal) * Style.marginXL : 0); return Style.barHeight + base + floatExtra; } return base; diff --git a/Modules/Panels/Settings/SettingsPanel.qml b/Modules/Panels/Settings/SettingsPanel.qml index eb0463ff4..6cb12b819 100644 --- a/Modules/Panels/Settings/SettingsPanel.qml +++ b/Modules/Panels/Settings/SettingsPanel.qml @@ -19,8 +19,8 @@ SmartPanel { readonly property bool attachToBar: Settings.data.ui.settingsPanelAttachToBar readonly property string barPosition: Settings.data.bar.position readonly property bool barFloating: Settings.data.bar.floating - readonly property real barMarginH: barFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0 - readonly property real barMarginV: barFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0 + readonly property real barMarginH: barFloating ? Math.ceil(Settings.data.bar.marginHorizontal * Style.marginXL) : 0 + readonly property real barMarginV: barFloating ? Math.ceil(Settings.data.bar.marginVertical * Style.marginXL) : 0 forceAttachToBar: attachToBar panelAnchorHorizontalCenter: attachToBar ? (barPosition === "top" || barPosition === "bottom") : true diff --git a/Modules/Panels/Settings/Tabs/BarTab.qml b/Modules/Panels/Settings/Tabs/BarTab.qml index 6d4468f7c..606f29cfb 100644 --- a/Modules/Panels/Settings/Tabs/BarTab.qml +++ b/Modules/Panels/Settings/Tabs/BarTab.qml @@ -181,7 +181,7 @@ ColumnLayout { stepSize: 0.01 value: Settings.data.bar.marginHorizontal onMoved: value => Settings.data.bar.marginHorizontal = value - text: Math.round(Settings.data.bar.marginHorizontal * 100) + "%" + text: Math.ceil(Settings.data.bar.marginHorizontal * 100) + "%" } } } diff --git a/Modules/Toast/ToastScreen.qml b/Modules/Toast/ToastScreen.qml index 1ab981b26..9c0ba3136 100644 --- a/Modules/Toast/ToastScreen.qml +++ b/Modules/Toast/ToastScreen.qml @@ -148,28 +148,28 @@ Item { readonly property int barOffsetTop: { if (barPos !== "top") return 0; - const floatMarginV = isFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0; + const floatMarginV = isFloating ? Math.ceil(Settings.data.bar.marginVertical * Style.marginXL) : 0; return Style.barHeight + floatMarginV; } readonly property int barOffsetBottom: { if (barPos !== "bottom") return 0; - const floatMarginV = isFloating ? Settings.data.bar.marginVertical * Style.marginXL : 0; + const floatMarginV = isFloating ? Math.ceil(Settings.data.bar.marginVertical * Style.marginXL) : 0; return Style.barHeight + floatMarginV; } readonly property int barOffsetLeft: { if (barPos !== "left") return 0; - const floatMarginH = isFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0; + const floatMarginH = isFloating ? Math.ceil(Settings.data.bar.marginHorizontal * Style.marginXL) : 0; return Style.barHeight + floatMarginH; } readonly property int barOffsetRight: { if (barPos !== "right") return 0; - const floatMarginH = isFloating ? Settings.data.bar.marginHorizontal * Style.marginXL : 0; + const floatMarginH = isFloating ? Math.ceil(Settings.data.bar.marginHorizontal * Style.marginXL) : 0; return Style.barHeight + floatMarginH; }