screenshot: do offset adjustments directly on each monitor's region data (#1539)

This commit is contained in:
end-4
2025-06-30 15:37:01 +02:00
parent 45846bf696
commit 6e9bb4945c
+22 -14
View File
@@ -105,7 +105,14 @@ ShellRoot {
readonly property list<var> windowRegions: filterWindowRegionsByLayers( readonly property list<var> windowRegions: filterWindowRegionsByLayers(
root.windows.filter(w => w.workspace.id === panelWindow.activeWorkspaceId), root.windows.filter(w => w.workspace.id === panelWindow.activeWorkspaceId),
panelWindow.layerRegions panelWindow.layerRegions
) ).map(window => {
return {
at: [window.at[0] - panelWindow.monitorOffsetX, window.at[1] - panelWindow.monitorOffsetY],
size: [window.size[0], window.size[1]],
class: window.class,
title: window.title,
}
})
readonly property list<var> layerRegions: { readonly property list<var> layerRegions: {
const layersOfThisMonitor = root.layers[panelWindow.hyprlandMonitor.name] const layersOfThisMonitor = root.layers[panelWindow.hyprlandMonitor.name]
const topLayers = layersOfThisMonitor.levels["2"] const topLayers = layersOfThisMonitor.levels["2"]
@@ -118,7 +125,14 @@ ShellRoot {
namespace: layer.namespace, namespace: layer.namespace,
} }
}) })
return nonBarTopLayers; const offsetAdjustedLayers = nonBarTopLayers.map(layer => {
return {
at: [layer.at[0] - panelWindow.monitorOffsetX, layer.at[1] - panelWindow.monitorOffsetY],
size: layer.size,
namespace: layer.namespace,
}
});
return offsetAdjustedLayers;
} }
property real targetedRegionX: -1 property real targetedRegionX: -1
@@ -211,10 +225,7 @@ ShellRoot {
// Layer regions // Layer regions
const clickedLayer = panelWindow.layerRegions.find(region => { const clickedLayer = panelWindow.layerRegions.find(region => {
return region.at[0] - panelWindow.monitorOffsetX <= x return region.at[0] <= x && x <= region.at[0] + region.size[0] && region.at[1] <= y && y <= region.at[1] + region.size[1];
&& x <= region.at[0] - panelWindow.monitorOffsetX + region.size[0]
&& region.at[1] - panelWindow.monitorOffsetY <= y
&& y <= region.at[1] - panelWindow.monitorOffsetY + region.size[1];
}); });
if (clickedLayer) { if (clickedLayer) {
panelWindow.targetedRegionX = clickedLayer.at[0]; panelWindow.targetedRegionX = clickedLayer.at[0];
@@ -226,10 +237,7 @@ ShellRoot {
// Window regions // Window regions
const clickedWindow = panelWindow.windowRegions.find(region => { const clickedWindow = panelWindow.windowRegions.find(region => {
return region.at[0] - panelWindow.monitorOffsetX <= x return region.at[0] <= x && x <= region.at[0] + region.size[0] && region.at[1] <= y && y <= region.at[1] + region.size[1];
&& x <= region.at[0] - panelWindow.monitorOffsetX + region.size[0]
&& region.at[1] - panelWindow.monitorOffsetY <= y
&& y <= region.at[1] - panelWindow.monitorOffsetY + region.size[1];
}); });
if (clickedWindow) { if (clickedWindow) {
panelWindow.targetedRegionX = clickedWindow.at[0]; panelWindow.targetedRegionX = clickedWindow.at[0];
@@ -445,8 +453,8 @@ ShellRoot {
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
} }
x: modelData.at[0] - panelWindow.monitorOffsetX x: modelData.at[0]
y: modelData.at[1] - panelWindow.monitorOffsetY y: modelData.at[1]
width: modelData.size[0] width: modelData.size[0]
height: modelData.size[1] height: modelData.size[1]
borderColor: root.windowBorderColor borderColor: root.windowBorderColor
@@ -477,8 +485,8 @@ ShellRoot {
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
} }
x: modelData.at[0] - panelWindow.monitorOffsetX x: modelData.at[0]
y: modelData.at[1] - panelWindow.monitorOffsetY y: modelData.at[1]
width: modelData.size[0] width: modelData.size[0]
height: modelData.size[1] height: modelData.size[1]
borderColor: root.windowBorderColor borderColor: root.windowBorderColor