diff --git a/Modules/Wallpaper/WallBackground.qml b/Modules/Wallpaper/WallBackground.qml index a47ca64..c2c8a35 100644 --- a/Modules/Wallpaper/WallBackground.qml +++ b/Modules/Wallpaper/WallBackground.qml @@ -29,17 +29,19 @@ Item { Img { id: one - } Img { id: two - } component Img: CachingImage { id: img + property real imageRatio: Math.max(1, sourceSize.width) / Math.max(1, sourceSize.height) + property bool isValid: sourceSize.width > 0 && sourceSize.height > 0 && root.width > 0 && root.height > 0 + property real windowRatio: root.width / Math.max(1, root.height) + function update(): void { if (path === root.source) { root.current = this; @@ -50,22 +52,14 @@ Item { anchors.fill: undefined asynchronous: true - opacity: 0 - fillMode: Image.Stretch - - property real windowRatio: root.width / Math.max(1, root.height) - property real imageRatio: Math.max(1, sourceSize.width) / Math.max(1, sourceSize.height) - - property bool isValid: sourceSize.width > 0 && sourceSize.height > 0 && root.width > 0 && root.height > 0 - - width: isValid ? (imageRatio > windowRatio ? root.height * imageRatio : root.width) * Config.background.zoom : root.width + fillMode: Image.PreserveAspectCrop height: isValid ? (imageRatio > windowRatio ? root.height : root.width / imageRatio) * Config.background.zoom : root.height - + opacity: 0 + scale: Wallpapers.showPreview ? 1 : 0.8 + width: isValid ? (imageRatio > windowRatio ? root.height * imageRatio : root.width) * Config.background.zoom : root.width x: isValid ? (root.width - width) * Config.background.alignX : 0 y: isValid ? (root.height - height) * Config.background.alignY : 0 - scale: Wallpapers.showPreview ? 1 : 0.8 - states: State { name: "visible" when: root.current === img