fix overview scaling issue

This commit is contained in:
Sola
2025-09-29 07:59:42 +08:00
parent 83be5822b1
commit 2b104435dc
2 changed files with 28 additions and 12 deletions
@@ -167,7 +167,7 @@ Item {
scale: root.scale scale: root.scale
availableWorkspaceWidth: root.workspaceImplicitWidth availableWorkspaceWidth: root.workspaceImplicitWidth
availableWorkspaceHeight: root.workspaceImplicitHeight availableWorkspaceHeight: root.workspaceImplicitHeight
widgetMonitorId: root.monitor.id widgetMonitor: HyprlandData.monitors.find(m => m.id == root.monitor.id)
windowData: windowByAddress[address] windowData: windowByAddress[address]
property bool atInitPosition: (initX == x && initY == y) property bool atInitPosition: (initX == x && initY == y)
@@ -17,14 +17,30 @@ Item { // Window
property var availableWorkspaceWidth property var availableWorkspaceWidth
property var availableWorkspaceHeight property var availableWorkspaceHeight
property bool restrictToWorkspace: true property bool restrictToWorkspace: true
property real initX: Math.max((windowData?.at[0] - (monitorData?.x ?? 0) - monitorData?.reserved[0]) * root.scale, 0) + xOffset property real widthRatio: {
property real initY: Math.max((windowData?.at[1] - (monitorData?.y ?? 0) - monitorData?.reserved[1]) * root.scale, 0) + yOffset const widgetWidth = widgetMonitor.transform & 1 ? widgetMonitor.height : widgetMonitor.width;
const monitorWidth = monitorData.transform & 1 ? monitorData.height : monitorData.width;
(widgetWidth * monitorData.scale) / (monitorWidth * widgetMonitor.scale);
}
property real heightRatio: {
const widgetHeight = widgetMonitor.transform & 1 ? widgetMonitor.width : widgetMonitor.height;
const monitorHeight = monitorData.transform & 1 ? monitorData.width : monitorData.height;
(widgetHeight * monitorData.scale) / (monitorHeight * widgetMonitor.scale);
}
property real initX: {
Math.max((windowData?.at[0] - (monitorData?.x ?? 0) - monitorData?.reserved[0]) * widthRatio * root.scale, 0) + xOffset;
}
property real initY: {
Math.max((windowData?.at[1] - (monitorData?.y ?? 0) - monitorData?.reserved[1]) * heightRatio * root.scale, 0) + yOffset;
}
property real xOffset: 0 property real xOffset: 0
property real yOffset: 0 property real yOffset: 0
property int widgetMonitorId: 0 property var widgetMonitor
property int widgetMonitorId: widgetMonitor.id
property var targetWindowWidth: windowData?.size[0] * scale property var targetWindowWidth: windowData?.size[0] * scale * widthRatio
property var targetWindowHeight: windowData?.size[1] * scale property var targetWindowHeight: windowData?.size[1] * scale * heightRatio
property bool hovered: false property bool hovered: false
property bool pressed: false property bool pressed: false
@@ -38,8 +54,8 @@ Item { // Window
x: initX x: initX
y: initY y: initY
width: windowData?.size[0] * root.scale width: targetWindowWidth
height: windowData?.size[1] * root.scale height: targetWindowHeight
opacity: windowData.monitor == widgetMonitorId ? 1 : 0.4 opacity: windowData.monitor == widgetMonitorId ? 1 : 0.4
layer.enabled: true layer.enabled: true
@@ -90,7 +106,7 @@ Item { // Window
// console.log("Icon ratio:", root.compactMode ? root.iconToWindowRatioCompact : root.iconToWindowRatio) // console.log("Icon ratio:", root.compactMode ? root.iconToWindowRatioCompact : root.iconToWindowRatio)
// console.log("Scale:", root.monitorData.scale) // console.log("Scale:", root.monitorData.scale)
// console.log("Final:", Math.min(targetWindowWidth, targetWindowHeight) * (root.compactMode ? root.iconToWindowRatioCompact : root.iconToWindowRatio) / root.monitorData.scale) // console.log("Final:", Math.min(targetWindowWidth, targetWindowHeight) * (root.compactMode ? root.iconToWindowRatioCompact : root.iconToWindowRatio) / root.monitorData.scale)
return Math.min(targetWindowWidth, targetWindowHeight) * (root.compactMode ? root.iconToWindowRatioCompact : root.iconToWindowRatio) / root.monitorData.scale; return Math.min(targetWindowWidth, targetWindowHeight) * (root.compactMode ? root.iconToWindowRatioCompact : root.iconToWindowRatio);
} }
// mipmap: true // mipmap: true
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter