NPanel: fix bar overlap when scaling

This commit is contained in:
lysec
2025-10-07 17:10:54 +02:00
parent c3ea5400f7
commit 88c5eabe59
+14 -6
View File
@@ -259,7 +259,7 @@ Loader {
if (!barIsVisible) {
return 0
}
switch (barPosition || panelAnchorVerticalCenter) {
switch (barPosition) {
case "top":
return (Style.barHeight + Style.marginS) * scaling + (Settings.data.bar.floating ? Settings.data.bar.marginVertical * Style.marginXL * scaling : 0)
default:
@@ -268,7 +268,7 @@ Loader {
}
property real marginBottom: {
if (!barIsVisible || panelAnchorVerticalCenter) {
if (!barIsVisible) {
return 0
}
switch (barPosition) {
@@ -280,7 +280,7 @@ Loader {
}
property real marginLeft: {
if (!barIsVisible || panelAnchorHorizontalCenter) {
if (!barIsVisible) {
return 0
}
switch (barPosition) {
@@ -292,7 +292,7 @@ Loader {
}
property real marginRight: {
if (!barIsVisible || panelAnchorHorizontalCenter) {
if (!barIsVisible) {
return 0
}
switch (barPosition) {
@@ -307,7 +307,11 @@ Loader {
property int calculatedX: {
// Priority to fixed anchoring
if (panelAnchorHorizontalCenter) {
return Math.round((panelWindow.width - panelBackground.width) / 2)
// Center horizontally but respect bar margins
var centerX = Math.round((panelWindow.width - panelBackground.width) / 2)
var minX = marginLeft
var maxX = panelWindow.width - panelBackground.width - marginRight
return Math.round(Math.max(minX, Math.min(centerX, maxX)))
} else if (panelAnchorLeft) {
return marginLeft
} else if (panelAnchorRight) {
@@ -344,7 +348,11 @@ Loader {
property int calculatedY: {
// Priority to fixed anchoring
if (panelAnchorVerticalCenter) {
return Math.round((panelWindow.height - panelBackground.height) / 2)
// Center vertically but respect bar margins
var centerY = Math.round((panelWindow.height - panelBackground.height) / 2)
var minY = marginTop
var maxY = panelWindow.height - panelBackground.height - marginBottom
return Math.round(Math.max(minY, Math.min(centerY, maxY)))
} else if (panelAnchorTop) {
return marginTop
} else if (panelAnchorBottom) {