fix: don't use zoom value when rendering wallpaper

This commit is contained in:
2026-10-06 13:30:27 +02:00
parent 9f5e62f9c7
commit 376595cd0b
5 changed files with 42 additions and 62 deletions
+38
View File
@@ -5,7 +5,9 @@ import Quickshell
import Quickshell.Io
import QtQuick
import ZShell.Models
import ZShell.Internal
import ZShell.Config
import qs.Components
import qs.Services
import qs.Helpers
import qs.Paths
@@ -140,4 +142,40 @@ Searcher {
}
}
}
WallpaperService {
id: wallpaper
path: root.current
}
Variants {
model: Quickshell.screens
WallpaperObject {
readonly property var crops: root.getCrop(modelData.name)
required property var modelData
cropHeight: crops?.height ?? 1.0
cropWidth: crops?.width ?? 1.0
cropX: crops?.x ?? 0.0
cropY: crops?.y ?? 0.0
screen: modelData.name
service: wallpaper
zoom: crops?.zoom ?? 1.0
Behavior on cropHeight {
Anim {}
}
Behavior on cropWidth {
Anim {}
}
Behavior on cropX {
Anim {}
}
Behavior on cropY {
Anim {}
}
}
}
}
+2 -2
View File
@@ -1,9 +1,9 @@
import Quickshell
import QtQuick
import qs.Modules.Wallpaper
import qs.Helpers
Scope {
Component.onCompleted: {
Wallpaper;
Wallpapers;
}
}
-51
View File
@@ -1,51 +0,0 @@
pragma Singleton
import Quickshell
import QtQuick
import ZShell.Internal
import qs.Components
import qs.Helpers
Singleton {
id: root
WallpaperService {
id: wallpaper
path: Wallpapers.current
}
Variants {
model: Quickshell.screens
WallpaperObject {
readonly property var crops: Wallpapers.getCrop(modelData.name)
required property var modelData
cropHeight: crops?.height ?? 1.0
cropWidth: crops?.width ?? 1.0
cropX: crops?.x ?? 0.0
cropY: crops?.y ?? 0.0
screen: modelData.name
service: wallpaper
zoom: crops?.zoom ?? 1.0
Behavior on cropHeight {
Anim {
}
}
Behavior on cropWidth {
Anim {
}
}
Behavior on cropX {
Anim {
}
}
Behavior on cropY {
Anim {
}
}
}
}
}
+2 -8
View File
@@ -614,17 +614,11 @@ QRectF WallpaperService::sourceRect(
const QVariantMap& crops, const QString& screen, const QSize& size) const {
QVariantMap crop = cropFor(crops, screen);
qreal zoom = crop.value("zoom", 1.0).toDouble();
if (zoom <= 0.0)
zoom = 1.0;
else if (zoom > 5.0)
zoom = 5.0;
QRectF rect(
crop.value("x", 0.0).toDouble(),
crop.value("y", 0.0).toDouble(),
crop.value("width", 1.0).toDouble() / zoom,
crop.value("height", 1.0).toDouble() / zoom);
crop.value("width", 1.0).toDouble(),
crop.value("height", 1.0).toDouble());
if (size.isEmpty() || rect.isEmpty() || m_image.isNull()) return rect;
-1
View File
@@ -8,7 +8,6 @@
import Quickshell
import Quickshell.Services.UPower
import qs.Modules
import qs.Modules.Wallpaper
import qs.Modules.Lock
import qs.Drawers
import qs.Modules.Polkit