forked from Shinonome/dots-hyprland
overview: partially fix window position for offset monitors (#1388)
This commit is contained in:
@@ -156,9 +156,9 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
delegate: OverviewWindow {
|
delegate: OverviewWindow {
|
||||||
|
id: window
|
||||||
required property var modelData
|
required property var modelData
|
||||||
property var address: `0x${modelData.HyprlandToplevel.address}`
|
property var address: `0x${modelData.HyprlandToplevel.address}`
|
||||||
id: window
|
|
||||||
windowData: windowByAddress[address]
|
windowData: windowByAddress[address]
|
||||||
toplevel: modelData
|
toplevel: modelData
|
||||||
monitorData: root.monitorData
|
monitorData: root.monitorData
|
||||||
@@ -166,13 +166,16 @@ Item {
|
|||||||
availableWorkspaceWidth: root.workspaceImplicitWidth
|
availableWorkspaceWidth: root.workspaceImplicitWidth
|
||||||
availableWorkspaceHeight: root.workspaceImplicitHeight
|
availableWorkspaceHeight: root.workspaceImplicitHeight
|
||||||
|
|
||||||
|
property int monitorId: windowData?.monitor
|
||||||
|
property var monitor: HyprlandData.monitors[monitorId]
|
||||||
|
|
||||||
property bool atInitPosition: (initX == x && initY == y)
|
property bool atInitPosition: (initX == x && initY == y)
|
||||||
restrictToWorkspace: Drag.active || atInitPosition
|
restrictToWorkspace: Drag.active || atInitPosition
|
||||||
|
|
||||||
property int workspaceColIndex: (windowData?.workspace.id - 1) % ConfigOptions.overview.numOfCols
|
property int workspaceColIndex: (windowData?.workspace.id - 1) % ConfigOptions.overview.numOfCols
|
||||||
property int workspaceRowIndex: Math.floor((windowData?.workspace.id - 1) % root.workspacesShown / ConfigOptions.overview.numOfCols)
|
property int workspaceRowIndex: Math.floor((windowData?.workspace.id - 1) % root.workspacesShown / ConfigOptions.overview.numOfCols)
|
||||||
xOffset: (root.workspaceImplicitWidth + workspaceSpacing) * workspaceColIndex
|
xOffset: (root.workspaceImplicitWidth + workspaceSpacing) * workspaceColIndex - (monitor?.x * root.scale)
|
||||||
yOffset: (root.workspaceImplicitHeight + workspaceSpacing) * workspaceRowIndex
|
yOffset: (root.workspaceImplicitHeight + workspaceSpacing) * workspaceRowIndex - (monitor?.y * root.scale)
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
id: updateWindowPosition
|
id: updateWindowPosition
|
||||||
@@ -182,6 +185,7 @@ Item {
|
|||||||
onTriggered: {
|
onTriggered: {
|
||||||
window.x = Math.round(Math.max((windowData?.at[0] - monitorData?.reserved[0]) * root.scale, 0) + xOffset)
|
window.x = Math.round(Math.max((windowData?.at[0] - monitorData?.reserved[0]) * root.scale, 0) + xOffset)
|
||||||
window.y = Math.round(Math.max((windowData?.at[1] - monitorData?.reserved[1]) * root.scale, 0) + yOffset)
|
window.y = Math.round(Math.max((windowData?.at[1] - monitorData?.reserved[1]) * root.scale, 0) + yOffset)
|
||||||
|
console.log(`[OverviewWindow] Updated position for window ${windowData?.address} to (${window.x}, ${window.y})`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,6 +205,7 @@ Item {
|
|||||||
window.pressed = true
|
window.pressed = true
|
||||||
window.Drag.active = true
|
window.Drag.active = true
|
||||||
window.Drag.source = window
|
window.Drag.source = window
|
||||||
|
console.log(`[OverviewWindow] Dragging window ${windowData?.address} from position (${window.x}, ${window.y})`)
|
||||||
}
|
}
|
||||||
onReleased: {
|
onReleased: {
|
||||||
const targetWorkspace = root.draggingTargetWorkspace
|
const targetWorkspace = root.draggingTargetWorkspace
|
||||||
|
|||||||
Reference in New Issue
Block a user