From 31b924495752979442b374e8d390f19f5377408d Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sat, 30 Aug 2025 13:29:38 +1000 Subject: plugin/cutils: fix saveItem scaling Fixes #521 Closes #524 --- plugin/src/Caelestia/cutils.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'plugin/src') diff --git a/plugin/src/Caelestia/cutils.cpp b/plugin/src/Caelestia/cutils.cpp index 3e7742b..f6ca0bf 100644 --- a/plugin/src/Caelestia/cutils.cpp +++ b/plugin/src/Caelestia/cutils.cpp @@ -1,6 +1,7 @@ #include "cutils.hpp" #include +#include #include #include #include @@ -38,15 +39,21 @@ void CUtils::saveItem(QQuickItem* target, const QUrl& path, const QRect& rect, Q return; } + auto scaledRect = rect; + if (rect.isValid()) { + qreal scale = target->window()->devicePixelRatio(); + scaledRect = QRect(rect.left() * scale, rect.top() * scale, rect.width() * scale, rect.height() * scale); + } + QSharedPointer grabResult = target->grabToImage(); QObject::connect(grabResult.data(), &QQuickItemGrabResult::ready, this, - [grabResult, rect, path, onSaved, onFailed, this]() { - QThreadPool::globalInstance()->start([grabResult, rect, path, onSaved, onFailed, this] { + [grabResult, scaledRect, path, onSaved, onFailed, this]() { + QThreadPool::globalInstance()->start([grabResult, scaledRect, path, onSaved, onFailed, this] { QImage image = grabResult->image(); - if (!rect.isEmpty()) { - image = image.copy(rect); + if (scaledRect.isValid()) { + image = image.copy(scaledRect); } const QString file = path.toLocalFile(); -- cgit v1.2.3-freya