antlarr created this revision. antlarr added a reviewer: Plasma. Restricted Application added a project: Plasma. Restricted Application added a subscriber: plasma-devel.
REVISION SUMMARY The default wallpaper method is to scale the wallpaper, and the previous algorithm in plasma choosed the wallpaper with closest area to the screen area (w*h) giving a bit of preference to downscaling over upscaling. The result was that in widescreens like 1280x720, a 1280x1024 wallpaper was preferred to be scaled down, instead of scaling down the also available 1920x1080 wallpaper, which had the same aspect ratio and so, was not distorted. This patch changes the Image::findPreferedImageInPackage method to do the same closest-area algorithm first on wallpapers with the same aspect ratio and if no wallpaper with same aspect ratio is found, then fallback to the previous algorithm. Note I added some variables so both happen in the same loop and we don't have to iterate twice over the wallpapers. This fixes https://bugzilla.opensuse.org/show_bug.cgi?id=990257 TEST PLAN Make sure the wallpaper mode is in Scale. Choose a wallpaper with 1920x1080 and 1280x1024 resolutions which shows a perfect circle, a recognizable object or a face. Then change the screen resolution to 1280x720. The wallpaper should appear with correct aspect ratio. REPOSITORY rPLASMAWORKSPACE Plasma Workspace BRANCH Plasma/5.8 REVISION DETAIL https://phabricator.kde.org/D2834 AFFECTED FILES wallpapers/image/image.cpp EMAIL PREFERENCES https://phabricator.kde.org/settings/panel/emailpreferences/ To: antlarr, #plasma Cc: plasma-devel, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas