From 0e4dd16b2f2a3eb17e30d7b8bb27a47de40996bec866b6d07e3b59364bda2f05 Mon Sep 17 00:00:00 2001 From: Christophe Giboudeaux Date: Wed, 3 Apr 2019 08:51:00 +0000 Subject: [PATCH 1/4] OBS-URL: https://build.opensuse.org/package/show/KDE:Applications/gwenview5?expand=0&rev=131 --- ...es-with-enabled-exceptions-required-.patch | 29 -- ...aration-for-Exiv2-Image-port-to-std-.patch | 455 ------------------ gwenview-18.12.3.tar.xz | 3 - gwenview-19.03.80.tar.xz | 3 + gwenview5.changes | 34 ++ gwenview5.spec | 8 +- 6 files changed, 38 insertions(+), 494 deletions(-) delete mode 100644 0001-Compile-more-files-with-enabled-exceptions-required-.patch delete mode 100644 0002-Use-forward-declaration-for-Exiv2-Image-port-to-std-.patch delete mode 100644 gwenview-18.12.3.tar.xz create mode 100644 gwenview-19.03.80.tar.xz diff --git a/0001-Compile-more-files-with-enabled-exceptions-required-.patch b/0001-Compile-more-files-with-enabled-exceptions-required-.patch deleted file mode 100644 index b1c96f9..0000000 --- a/0001-Compile-more-files-with-enabled-exceptions-required-.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 1910e0409fd0b73a931f45389865c1e0a55a49e5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Stefan=20Br=C3=BCns?= -Date: Sat, 29 Dec 2018 23:39:30 +0100 -Subject: [PATCH 1/2] Compile more files with enabled exceptions, required for - exiv2 0.27 - ---- - lib/CMakeLists.txt | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt -index d60ae47f..229eac2a 100644 ---- a/lib/CMakeLists.txt -+++ b/lib/CMakeLists.txt -@@ -224,6 +224,11 @@ kde_source_files_enable_exceptions( - exiv2imageloader.cpp - imagemetainfomodel.cpp - timeutils.cpp -+ cms/cmsprofile.cpp -+ document/abstractdocumentimpl.cpp -+ document/document.cpp -+ document/loadingdocumentimpl.cpp -+ jpegcontent.cpp - ) - - ki18n_wrap_ui(gwenviewlib_SRCS --- -2.20.1 - diff --git a/0002-Use-forward-declaration-for-Exiv2-Image-port-to-std-.patch b/0002-Use-forward-declaration-for-Exiv2-Image-port-to-std-.patch deleted file mode 100644 index 5a82564..0000000 --- a/0002-Use-forward-declaration-for-Exiv2-Image-port-to-std-.patch +++ /dev/null @@ -1,455 +0,0 @@ -From 248b358495a3e5488fed4443d0dc135fbf604302 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Stefan=20Br=C3=BCns?= -Date: Sun, 30 Dec 2018 02:46:28 +0100 -Subject: [PATCH 2/2] Use forward declaration for Exiv2::Image, port to - std::unique_ptr - -Instead of the Exiv2::Image::AutoPtr typedef just use a forward declaration -for Exiv2::Image, and use std::unique_ptr instead of std::auto_ptr. - -The forward declaration avoids pulling in Exiv2 declarations everywhere, -e.g. via document.h. - -Although it would be possible to use std::auto_ptr, unique_ptr is -preferable for two reasons: -- ownership transfer is explicit (std::move, release()/reset()) -- Exiv2 0.28 will use std::unique_ptr as well, i.e. the code is forward -compatible. ---- - lib/cms/cmsprofile.cpp | 3 +++ - lib/cms/cmsprofile.h | 8 +++++--- - lib/document/abstractdocumentimpl.cpp | 5 +++-- - lib/document/abstractdocumentimpl.h | 7 ++++++- - lib/document/document.cpp | 7 +++++-- - lib/document/document.h | 11 ++++++++--- - lib/document/document_p.h | 10 +++++++++- - lib/document/loadingdocumentimpl.cpp | 7 +++++-- - lib/exiv2imageloader.cpp | 13 ++++++------- - lib/exiv2imageloader.h | 11 ++++++++--- - lib/jpegcontent.cpp | 10 +++++----- - lib/timeutils.cpp | 8 +++++--- - tests/auto/cmsprofiletest.cpp | 4 ++-- - tests/auto/imagemetainfomodeltest.cpp | 5 ++++- - 14 files changed, 74 insertions(+), 35 deletions(-) - -diff --git a/lib/cms/cmsprofile.cpp b/lib/cms/cmsprofile.cpp -index 188b90a4..7d2b753e 100644 ---- a/lib/cms/cmsprofile.cpp -+++ b/lib/cms/cmsprofile.cpp -@@ -42,6 +42,9 @@ extern "C" { - // lcms - #include - -+// Exiv2 -+#include -+ - // X11 - #ifdef HAVE_X11 - #include -diff --git a/lib/cms/cmsprofile.h b/lib/cms/cmsprofile.h -index a2a38a87..41abe97c 100644 ---- a/lib/cms/cmsprofile.h -+++ b/lib/cms/cmsprofile.h -@@ -29,12 +29,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA - #include - #include - --// Exiv2 --#include -- - class QByteArray; - class QString; - -+namespace Exiv2 -+{ -+class Image; -+} -+ - typedef void* cmsHPROFILE; - - namespace Gwenview -diff --git a/lib/document/abstractdocumentimpl.cpp b/lib/document/abstractdocumentimpl.cpp -index d841ae5f..d3d0002c 100644 ---- a/lib/document/abstractdocumentimpl.cpp -+++ b/lib/document/abstractdocumentimpl.cpp -@@ -21,6 +21,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - // Self - #include "abstractdocumentimpl.h" - -+#include - // Qt - - // KDE -@@ -77,9 +78,9 @@ void AbstractDocumentImpl::setDocumentKind(MimeTypeUtils::Kind kind) - d->mDocument->setKind(kind); - } - --void AbstractDocumentImpl::setDocumentExiv2Image(Exiv2::Image::AutoPtr image) -+void AbstractDocumentImpl::setDocumentExiv2Image(std::unique_ptr image) - { -- d->mDocument->setExiv2Image(image); -+ d->mDocument->setExiv2Image(std::move(image)); - } - - void AbstractDocumentImpl::setDocumentDownSampledImage(const QImage& image, int invertedZoom) -diff --git a/lib/document/abstractdocumentimpl.h b/lib/document/abstractdocumentimpl.h -index 1f427e60..86e6bfd2 100644 ---- a/lib/document/abstractdocumentimpl.h -+++ b/lib/document/abstractdocumentimpl.h -@@ -34,6 +34,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - class QImage; - class QRect; - -+namespace Exiv2 -+{ -+ class Image; -+} -+ - namespace Gwenview - { - -@@ -108,7 +113,7 @@ protected: - void setDocumentImageSize(const QSize& size); - void setDocumentKind(MimeTypeUtils::Kind); - void setDocumentFormat(const QByteArray& format); -- void setDocumentExiv2Image(Exiv2::Image::AutoPtr); -+ void setDocumentExiv2Image(std::unique_ptr); - void setDocumentDownSampledImage(const QImage&, int invertedZoom); - void setDocumentCmsProfile(Cms::Profile::Ptr profile); - void setDocumentErrorString(const QString&); -diff --git a/lib/document/document.cpp b/lib/document/document.cpp -index 18756700..afa9ed03 100644 ---- a/lib/document/document.cpp -+++ b/lib/document/document.cpp -@@ -31,6 +31,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - #include - #include - -+// Exiv2 -+#include -+ - // Local - #include "documentjob.h" - #include "emptydocumentimpl.h" -@@ -388,9 +391,9 @@ AbstractDocumentEditor* Document::editor() - return d->mImpl->editor(); - } - --void Document::setExiv2Image(Exiv2::Image::AutoPtr image) -+void Document::setExiv2Image(std::unique_ptr image) - { -- d->mExiv2Image = image; -+ d->mExiv2Image = std::move(image); - d->mImageMetaInfoModel.setExiv2Image(d->mExiv2Image.get()); - emit metaInfoUpdated(); - } -diff --git a/lib/document/document.h b/lib/document/document.h -index c0bb454b..4b40a6e1 100644 ---- a/lib/document/document.h -+++ b/lib/document/document.h -@@ -22,8 +22,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - #include - --#include --#include -+// STL -+#include - - // Qt - #include -@@ -43,6 +43,11 @@ class QUndoStack; - class KJob; - class QUrl; - -+namespace Exiv2 -+{ -+ class Image; -+} -+ - namespace Gwenview - { - -@@ -235,7 +240,7 @@ private: - void setKind(MimeTypeUtils::Kind); - void setFormat(const QByteArray&); - void setSize(const QSize&); -- void setExiv2Image(Exiv2::Image::AutoPtr); -+ void setExiv2Image(std::unique_ptr); - void setDownSampledImage(const QImage&, int invertedZoom); - void switchToImpl(AbstractDocumentImpl* impl); - void setErrorString(const QString&); -diff --git a/lib/document/document_p.h b/lib/document/document_p.h -index 78e0ac6e..4de25f15 100644 ---- a/lib/document/document_p.h -+++ b/lib/document/document_p.h -@@ -21,6 +21,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA - #ifndef DOCUMENT_P_H - #define DOCUMENT_P_H - -+// STL -+#include -+ - // Local - #include - #include -@@ -34,6 +37,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA - #include - #include - -+namespace Exiv2 -+{ -+ class Image; -+} -+ - namespace Gwenview - { - -@@ -54,7 +62,7 @@ struct DocumentPrivate - QSize mSize; - QImage mImage; - QMap mDownSampledImageMap; -- Exiv2::Image::AutoPtr mExiv2Image; -+ std::unique_ptr mExiv2Image; - MimeTypeUtils::Kind mKind; - QByteArray mFormat; - ImageMetaInfoModel mImageMetaInfoModel; -diff --git a/lib/document/loadingdocumentimpl.cpp b/lib/document/loadingdocumentimpl.cpp -index 07675783..766a1831 100644 ---- a/lib/document/loadingdocumentimpl.cpp -+++ b/lib/document/loadingdocumentimpl.cpp -@@ -24,6 +24,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - // STL - #include - -+// Exiv2 -+#include -+ - // Qt - #include - #include -@@ -100,7 +103,7 @@ struct LoadingDocumentImplPrivate - QByteArray mData; - QByteArray mFormat; - QSize mImageSize; -- Exiv2::Image::AutoPtr mExiv2Image; -+ std::unique_ptr mExiv2Image; - std::unique_ptr mJpegContent; - QImage mImage; - Cms::Profile::Ptr mCmsProfile; -@@ -486,7 +489,7 @@ void LoadingDocumentImpl::slotMetaInfoLoaded() - - setDocumentFormat(d->mFormat); - setDocumentImageSize(d->mImageSize); -- setDocumentExiv2Image(d->mExiv2Image); -+ setDocumentExiv2Image(std::move(d->mExiv2Image)); - setDocumentCmsProfile(d->mCmsProfile); - - d->mMetaInfoLoaded = true; -diff --git a/lib/exiv2imageloader.cpp b/lib/exiv2imageloader.cpp -index f2830f81..f13dff7a 100644 ---- a/lib/exiv2imageloader.cpp -+++ b/lib/exiv2imageloader.cpp -@@ -29,8 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - // KDE - - // Exiv2 --#include --#include -+#include - - // Local - -@@ -39,7 +38,7 @@ namespace Gwenview - - struct Exiv2ImageLoaderPrivate - { -- Exiv2::Image::AutoPtr mImage; -+ std::unique_ptr mImage; - QString mErrorMessage; - }; - -@@ -57,7 +56,7 @@ bool Exiv2ImageLoader::load(const QString& filePath) - { - QByteArray filePathByteArray = QFile::encodeName(filePath); - try { -- d->mImage = Exiv2::ImageFactory::open(filePathByteArray.constData()); -+ d->mImage.reset(Exiv2::ImageFactory::open(filePathByteArray.constData()).release()); - d->mImage->readMetadata(); - } catch (const Exiv2::Error& error) { - d->mErrorMessage = QString::fromUtf8(error.what()); -@@ -69,7 +68,7 @@ bool Exiv2ImageLoader::load(const QString& filePath) - bool Exiv2ImageLoader::load(const QByteArray& data) - { - try { -- d->mImage = Exiv2::ImageFactory::open((unsigned char*)data.constData(), data.size()); -+ d->mImage.reset(Exiv2::ImageFactory::open((unsigned char*)data.constData(), data.size()).release()); - d->mImage->readMetadata(); - } catch (const Exiv2::Error& error) { - d->mErrorMessage = QString::fromUtf8(error.what()); -@@ -83,9 +82,9 @@ QString Exiv2ImageLoader::errorMessage() const - return d->mErrorMessage; - } - --Exiv2::Image::AutoPtr Exiv2ImageLoader::popImage() -+std::unique_ptr Exiv2ImageLoader::popImage() - { -- return d->mImage; -+ return std::move(d->mImage); - } - - } // namespace -diff --git a/lib/exiv2imageloader.h b/lib/exiv2imageloader.h -index 57ef24d2..12a45b68 100644 ---- a/lib/exiv2imageloader.h -+++ b/lib/exiv2imageloader.h -@@ -23,13 +23,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - #include - -+// STL -+#include -+ - // Qt - - // KDE - - // Exiv2 --#include --#include -+namespace Exiv2 -+{ -+ class Image; -+} - - // Local - -@@ -54,7 +59,7 @@ public: - bool load(const QString&); - bool load(const QByteArray&); - QString errorMessage() const; -- Exiv2::Image::AutoPtr popImage(); -+ std::unique_ptr popImage(); - - private: - Exiv2ImageLoaderPrivate* const d; -diff --git a/lib/jpegcontent.cpp b/lib/jpegcontent.cpp -index bb810dd4..a8cf909f 100644 ---- a/lib/jpegcontent.cpp -+++ b/lib/jpegcontent.cpp -@@ -42,8 +42,7 @@ extern "C" { - #include - - // Exiv2 --#include --#include -+#include - - // Local - #include "jpegerrormanager.h" -@@ -216,12 +215,12 @@ bool JpegContent::load(const QString& path) - - bool JpegContent::loadFromData(const QByteArray& data) - { -- Exiv2::Image::AutoPtr image; -+ std::unique_ptr image; - Exiv2ImageLoader loader; - if (!loader.load(data)) { - qCritical() << "Could not load image with Exiv2, reported error:" << loader.errorMessage(); - } -- image = loader.popImage(); -+ image.reset(loader.popImage().release()); - - return loadFromData(data, image.get()); - } -@@ -603,7 +602,8 @@ bool JpegContent::save(QIODevice* device) - d->mPendingTransformation = false; - } - -- Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((unsigned char*)d->mRawData.data(), d->mRawData.size()); -+ std::unique_ptr image; -+ image.reset(Exiv2::ImageFactory::open((unsigned char*)d->mRawData.data(), d->mRawData.size()).release()); - - // Store Exif info - image->setExifData(d->mExifData); -diff --git a/lib/timeutils.cpp b/lib/timeutils.cpp -index 9e8836a9..3c519098 100644 ---- a/lib/timeutils.cpp -+++ b/lib/timeutils.cpp -@@ -21,6 +21,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA - // Self - #include "timeutils.h" - -+// STL -+#include -+ - // Qt - #include - #include -@@ -30,8 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA - #include - - // Exiv2 --#include --#include -+#include - - // Local - #include -@@ -92,7 +94,7 @@ struct CacheItem - if (!loader.load(path)) { - return false; - } -- Exiv2::Image::AutoPtr img = loader.popImage(); -+ std::unique_ptr img(loader.popImage().release()); - try { - Exiv2::ExifData exifData = img->exifData(); - if (exifData.empty()) { -diff --git a/tests/auto/cmsprofiletest.cpp b/tests/auto/cmsprofiletest.cpp -index 4efc441b..f4c7f9e5 100644 ---- a/tests/auto/cmsprofiletest.cpp -+++ b/tests/auto/cmsprofiletest.cpp -@@ -69,7 +69,7 @@ void CmsProfileTest::testLoadFromImageData_data() - void CmsProfileTest::testLoadFromExiv2Image() - { - QFETCH(QString, fileName); -- Exiv2::Image::AutoPtr image; -+ std::unique_ptr image; - { - QByteArray data; - QString path = pathForTestFile(fileName); -@@ -80,7 +80,7 @@ void CmsProfileTest::testLoadFromExiv2Image() - - Exiv2ImageLoader loader; - QVERIFY(loader.load(data)); -- image = loader.popImage(); -+ image.reset(loader.popImage().release()); - } - Cms::Profile::Ptr ptr = Cms::Profile::loadFromExiv2Image(image.get()); - QVERIFY(!ptr.isNull()); -diff --git a/tests/auto/imagemetainfomodeltest.cpp b/tests/auto/imagemetainfomodeltest.cpp -index e3ec8d30..2e569dba 100644 ---- a/tests/auto/imagemetainfomodeltest.cpp -+++ b/tests/auto/imagemetainfomodeltest.cpp -@@ -17,6 +17,9 @@ along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - */ -+ -+#include -+ - // Qt - - // KDE -@@ -46,7 +49,7 @@ void ImageMetaInfoModelTest::testCatchExiv2Errors() - data = file.readAll(); - } - -- Exiv2::Image::AutoPtr image; -+ std::unique_ptr image; - { - Exiv2ImageLoader loader; - QVERIFY(loader.load(data)); --- -2.20.1 - diff --git a/gwenview-18.12.3.tar.xz b/gwenview-18.12.3.tar.xz deleted file mode 100644 index adafa5e..0000000 --- a/gwenview-18.12.3.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0b4ff869fc09140e258e894f5169fc6c96f1126891b8ed1a391d4624d6ab0c35 -size 5714316 diff --git a/gwenview-19.03.80.tar.xz b/gwenview-19.03.80.tar.xz new file mode 100644 index 0000000..a342279 --- /dev/null +++ b/gwenview-19.03.80.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b334c747ba09a9f86cda273643fc79609349a73384ed0d021fdddd6ca830d489 +size 5717040 diff --git a/gwenview5.changes b/gwenview5.changes index 3963534..f8cee24 100644 --- a/gwenview5.changes +++ b/gwenview5.changes @@ -1,3 +1,37 @@ +------------------------------------------------------------------- +Wed Mar 27 06:40:56 UTC 2019 - lbeltrame@kde.org + +- Update to 19.03.80 + * New feature release + * For more details please see: + * https://kde.org/announcements/announce-applications-19.04-beta.php +- Changes since 18.12.3: + * Fix compilation in some systems + * Touch support for Gwenview + * Deprecated-- + * Remove deprecated method + * [MainWindow] Navigate through mouse forward/back buttons + * Compile tests files with enabled exceptions, required for exiv2 0.27 + * Allow Gwenview to be able to open .kra (Krita) files + * Set the same image mime types in all desktop files + * Add mime types for raw image formats to desktop file + * Create shortcut to focus navigator bar + * Use semantically correct restoration icon + * Use user-trash icon for Trash action (kde#391078) + * Port to new connect api + * Use Ctrl+i to trigger a name filter, which matches Dolphin (kde#386531) + * Ignore files + * Const'ify, add const'ref found by clazy + * Bump max thumbnail size to 512px + * Compile more files with enabled exceptions, required for exiv2 0.27 + * Use forward declaration for Exiv2::Image, port to std::unique_ptr + * Use FlowLayout for Crop toolbar + * Fix mem leak found by asan + * [ThumbnailView] Fix mouse buttons handling +- Dropped patches, now upstream: + * 0001-Compile-more-files-with-enabled-exceptions-required-.patch + * 0002-Use-forward-declaration-for-Exiv2-Image-port-to-std-.patch + ------------------------------------------------------------------- Sat Mar 09 08:03:12 UTC 2019 - lbeltrame@kde.org diff --git a/gwenview5.spec b/gwenview5.spec index e4a3858..d951059 100644 --- a/gwenview5.spec +++ b/gwenview5.spec @@ -21,17 +21,13 @@ %{!?_kapp_version: %define _kapp_version %(echo %{version}| awk -F. '{print $1"."$2}')} %bcond_without lang Name: gwenview5 -Version: 18.12.3 +Version: 19.03.80 Release: 0 Summary: Image Viewer by KDE License: GPL-2.0-or-later Group: Productivity/Graphics/Viewers URL: http://www.kde.org Source: gwenview-%{version}.tar.xz -# PATCH-FIX-UPSTREAM - D17873 -Patch0: 0001-Compile-more-files-with-enabled-exceptions-required-.patch -# PATCH-FIX-UPSTREAM - D17872 -Patch1: 0002-Use-forward-declaration-for-Exiv2-Image-port-to-std-.patch BuildRequires: baloo5-devel BuildRequires: cfitsio-devel BuildRequires: extra-cmake-modules >= %{kf5_version} @@ -85,8 +81,6 @@ hierarchies. %prep %setup -q -n gwenview-%{version} -%patch0 -p1 -%patch1 -p1 %build %if 0%{?suse_version} < 1330 From 96a2d09d9f739144747ff0d94249a2134b5a5e357354d2dfb5cf20afc7efb16f Mon Sep 17 00:00:00 2001 From: Christophe Giboudeaux Date: Thu, 11 Apr 2019 19:36:44 +0000 Subject: [PATCH 2/4] KDE Applications 19.04 RC OBS-URL: https://build.opensuse.org/package/show/KDE:Applications/gwenview5?expand=0&rev=132 --- gwenview-19.03.80.tar.xz | 3 --- gwenview-19.03.90.tar.xz | 3 +++ gwenview5.changes | 11 +++++++++++ gwenview5.spec | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) delete mode 100644 gwenview-19.03.80.tar.xz create mode 100644 gwenview-19.03.90.tar.xz diff --git a/gwenview-19.03.80.tar.xz b/gwenview-19.03.80.tar.xz deleted file mode 100644 index a342279..0000000 --- a/gwenview-19.03.80.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b334c747ba09a9f86cda273643fc79609349a73384ed0d021fdddd6ca830d489 -size 5717040 diff --git a/gwenview-19.03.90.tar.xz b/gwenview-19.03.90.tar.xz new file mode 100644 index 0000000..0e3edc6 --- /dev/null +++ b/gwenview-19.03.90.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59172e64e966643c271b575eb9158695d341b1e4999ab6a7311de15f3860ef0d +size 5717368 diff --git a/gwenview5.changes b/gwenview5.changes index f8cee24..a06310b 100644 --- a/gwenview5.changes +++ b/gwenview5.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue Apr 09 20:54:38 UTC 2019 - lbeltrame@kde.org + +- Update to 19.03.90 + * New feature release + * For more details please see: + * https://kde.org/announcements/announce-applications-19.04-rc.php +- Changes since 19.03.80: + * HiDPI Support for Gwenview (kde#373178) + * Fix -Wreturn-type warning for jpeg version check + ------------------------------------------------------------------- Wed Mar 27 06:40:56 UTC 2019 - lbeltrame@kde.org diff --git a/gwenview5.spec b/gwenview5.spec index d951059..7f4c4c9 100644 --- a/gwenview5.spec +++ b/gwenview5.spec @@ -21,7 +21,7 @@ %{!?_kapp_version: %define _kapp_version %(echo %{version}| awk -F. '{print $1"."$2}')} %bcond_without lang Name: gwenview5 -Version: 19.03.80 +Version: 19.03.90 Release: 0 Summary: Image Viewer by KDE License: GPL-2.0-or-later From c761bcbaaba95d4910025e028a825f3f82983ceb46839e23b52df86c03f78184 Mon Sep 17 00:00:00 2001 From: Luca Beltrame Date: Fri, 12 Apr 2019 05:37:26 +0000 Subject: [PATCH 3/4] - Add upstream patch for HiDPI support in thumbnails (kde#373178): * 0001-Add-HiDPI-support-for-thumbnails.patch OBS-URL: https://build.opensuse.org/package/show/KDE:Applications/gwenview5?expand=0&rev=133 --- 0001-Add-HiDPI-support-for-thumbnails.patch | 239 ++++++++++++++++++++ gwenview5.changes | 2 + gwenview5.spec | 2 + 3 files changed, 243 insertions(+) create mode 100644 0001-Add-HiDPI-support-for-thumbnails.patch diff --git a/0001-Add-HiDPI-support-for-thumbnails.patch b/0001-Add-HiDPI-support-for-thumbnails.patch new file mode 100644 index 0000000..63bf863 --- /dev/null +++ b/0001-Add-HiDPI-support-for-thumbnails.patch @@ -0,0 +1,239 @@ +From 968c411a99576aa9e7784812e26e054ab290ae27 Mon Sep 17 00:00:00 2001 +From: Alexander Volkov +Date: Sun, 7 Apr 2019 08:01:19 -0600 +Subject: [PATCH] Add HiDPI support for thumbnails + +Summary: +The idea is to localize changes in ThumbnailView as much as possible: +ThumbnailView::thumbnailSize() returns the size in device independent +pixels, i.e. it seems from the outside that ThumbnailView behaves as +well as before this change. But, of course, item delegates must take +into account that ThumbnailView::thumbnailForIndex() will return +a pixmap with the devicePixelRatio set. + +CCBUG: 373178 + +Reviewers: #gwenview, ngraham + +Reviewed By: #gwenview, ngraham + +Subscribers: ngraham + +Tags: #gwenview + +Differential Revision: https://phabricator.kde.org/D20267 +--- + lib/thumbnailview/previewitemdelegate.cpp | 18 ++++++++++------ + lib/thumbnailview/thumbnailbarview.cpp | 17 +++++++++------ + lib/thumbnailview/thumbnailslider.cpp | 2 +- + lib/thumbnailview/thumbnailview.cpp | 26 ++++++++++++++--------- + 4 files changed, 38 insertions(+), 25 deletions(-) + +diff --git a/lib/thumbnailview/previewitemdelegate.cpp b/lib/thumbnailview/previewitemdelegate.cpp +index 974053b8..f910b0c1 100644 +--- a/lib/thumbnailview/previewitemdelegate.cpp ++++ b/lib/thumbnailview/previewitemdelegate.cpp +@@ -164,7 +164,8 @@ struct PreviewItemDelegatePrivate + const int posX = mContextBarActions == PreviewItemDelegate::SelectionAction + ? 0 + : (rect.width() - mContextBar->width()) / 2; +- const int posY = qMax(CONTEXTBAR_MARGIN, mThumbnailSize.height() - thumbnailPix.height() - mContextBar->height()); ++ const int thumbnailPixHeight = qRound(thumbnailPix.height() / thumbnailPix.devicePixelRatio()); ++ const int posY = qMax(CONTEXTBAR_MARGIN, mThumbnailSize.height() - thumbnailPixHeight - mContextBar->height()); + mContextBar->move(rect.topLeft() + QPoint(posX, posY)); + mContextBar->show(); + } +@@ -317,13 +318,15 @@ struct PreviewItemDelegatePrivate + { + const QPoint shadowOffset(-SHADOW_SIZE, -SHADOW_SIZE + 1); + +- int key = rect.height() * 1000 + rect.width(); ++ const auto dpr = painter->device()->devicePixelRatioF(); ++ int key = qRound((rect.height() * 1000 + rect.width()) * dpr); + + ShadowCache::Iterator it = mShadowCache.find(key); + if (it == mShadowCache.end()) { + QSize size = QSize(rect.width() + 2 * SHADOW_SIZE, rect.height() + 2 * SHADOW_SIZE); + QColor color(0, 0, 0, SHADOW_STRENGTH); +- QPixmap shadow = PaintUtils::generateFuzzyRect(size, color, SHADOW_SIZE); ++ QPixmap shadow = PaintUtils::generateFuzzyRect(size * dpr, color, qRound(SHADOW_SIZE * dpr)); ++ shadow.setDevicePixelRatio(dpr); + it = mShadowCache.insert(key, shadow); + } + painter->drawPixmap(rect.topLeft() + shadowOffset, it.value()); +@@ -688,6 +691,7 @@ void PreviewItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & + int thumbnailHeight = d->mThumbnailSize.height(); + QSize fullSize; + QPixmap thumbnailPix = d->mView->thumbnailForIndex(index, &fullSize); ++ QSize thumbnailSize = thumbnailPix.size() / thumbnailPix.devicePixelRatio(); + const KFileItem fileItem = fileItemForIndex(index); + const bool opaque = !thumbnailPix.hasAlphaChannel(); + const bool isDirOrArchive = ArchiveUtils::fileItemIsDirOrArchive(fileItem); +@@ -739,10 +743,10 @@ void PreviewItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & + + // Compute thumbnailRect + QRect thumbnailRect = QRect( +- rect.left() + (rect.width() - thumbnailPix.width()) / 2, +- rect.top() + (thumbnailHeight - thumbnailPix.height()) + ITEM_MARGIN, +- thumbnailPix.width(), +- thumbnailPix.height()); ++ rect.left() + (rect.width() - thumbnailSize.width()) / 2, ++ rect.top() + (thumbnailHeight - thumbnailSize.height()) + ITEM_MARGIN, ++ thumbnailSize.width(), ++ thumbnailSize.height()); + + // Draw background + const QRect backgroundRect = thumbnailRect.adjusted(-ITEM_MARGIN, -ITEM_MARGIN, ITEM_MARGIN, ITEM_MARGIN); +diff --git a/lib/thumbnailview/thumbnailbarview.cpp b/lib/thumbnailview/thumbnailbarview.cpp +index f7e6e9a0..a3cc1930 100644 +--- a/lib/thumbnailview/thumbnailbarview.cpp ++++ b/lib/thumbnailview/thumbnailbarview.cpp +@@ -102,13 +102,15 @@ struct ThumbnailBarItemDelegatePrivate + { + const QPoint shadowOffset(-SHADOW_SIZE, -SHADOW_SIZE + 1); + +- int key = rect.height() * 1000 + rect.width(); ++ const auto dpr = painter->device()->devicePixelRatioF(); ++ int key = qRound((rect.height() * 1000 + rect.width()) * dpr); + + ShadowCache::Iterator it = mShadowCache.find(key); + if (it == mShadowCache.end()) { + QSize size = QSize(rect.width() + 2 * SHADOW_SIZE, rect.height() + 2 * SHADOW_SIZE); + QColor color(0, 0, 0, SHADOW_STRENGTH); +- QPixmap shadow = PaintUtils::generateFuzzyRect(size, color, SHADOW_SIZE); ++ QPixmap shadow = PaintUtils::generateFuzzyRect(size * dpr, color, qRound(SHADOW_SIZE * dpr)); ++ shadow.setDevicePixelRatio(dpr); + it = mShadowCache.insert(key, shadow); + } + painter->drawPixmap(rect.topLeft() + shadowOffset, it.value()); +@@ -175,7 +177,7 @@ QSize ThumbnailBarItemDelegate::sizeHint(const QStyleOptionViewItem & /*option*/ + size = d->mView->gridSize(); + } else { + QPixmap thumbnailPix = d->mView->thumbnailForIndex(index); +- size = thumbnailPix.size(); ++ size = thumbnailPix.size() / thumbnailPix.devicePixelRatio(); + size.rwidth() += ITEM_MARGIN * 2; + size.rheight() += ITEM_MARGIN * 2; + } +@@ -203,6 +205,7 @@ void ThumbnailBarItemDelegate::paint(QPainter * painter, const QStyleOptionViewI + bool isSelected = option.state & QStyle::State_Selected; + bool isCurrent = d->mView->selectionModel()->currentIndex() == index; + QPixmap thumbnailPix = d->mView->thumbnailForIndex(index); ++ QSize thumbnailSize = thumbnailPix.size() / thumbnailPix.devicePixelRatio(); + QRect rect = option.rect; + + QStyleOptionViewItem opt = option; +@@ -219,10 +222,10 @@ void ThumbnailBarItemDelegate::paint(QPainter * painter, const QStyleOptionViewI + // Draw thumbnail + if (!thumbnailPix.isNull()) { + QRect thumbnailRect = QRect( +- rect.left() + (rect.width() - thumbnailPix.width()) / 2, +- rect.top() + (rect.height() - thumbnailPix.height()) / 2 - 1, +- thumbnailPix.width(), +- thumbnailPix.height()); ++ rect.left() + (rect.width() - thumbnailSize.width()) / 2, ++ rect.top() + (rect.height() - thumbnailSize.height()) / 2 - 1, ++ thumbnailSize.width(), ++ thumbnailSize.height()); + + if (!thumbnailPix.hasAlphaChannel()) { + d->drawShadow(painter, thumbnailRect); +diff --git a/lib/thumbnailview/thumbnailslider.cpp b/lib/thumbnailview/thumbnailslider.cpp +index 2c7fa2c9..03fabe26 100644 +--- a/lib/thumbnailview/thumbnailslider.cpp ++++ b/lib/thumbnailview/thumbnailslider.cpp +@@ -65,7 +65,7 @@ void ThumbnailSlider::slotActionTriggered(int actionTriggered) + void ThumbnailSlider::updateToolTip() + { + // FIXME: i18n? +- const int size = slider()->sliderPosition(); ++ const int size = qRound(slider()->sliderPosition() * devicePixelRatioF()); + const QString text = QStringLiteral("%1 x %2").arg(size).arg(size); + slider()->setToolTip(text); + } +diff --git a/lib/thumbnailview/thumbnailview.cpp b/lib/thumbnailview/thumbnailview.cpp +index a076dd1e..072a4479 100644 +--- a/lib/thumbnailview/thumbnailview.cpp ++++ b/lib/thumbnailview/thumbnailview.cpp +@@ -379,11 +379,12 @@ void ThumbnailView::updateThumbnailSize() + { + QSize value = d->mThumbnailSize; + // mWaitingThumbnail ++ const auto dpr = devicePixelRatioF(); + int waitingThumbnailSize; +- if (value.width() > 64) { +- waitingThumbnailSize = 48; ++ if (value.width() > 64 * dpr) { ++ waitingThumbnailSize = qRound(48 * dpr); + } else { +- waitingThumbnailSize = 32; ++ waitingThumbnailSize = qRound(32 * dpr); + } + QPixmap icon = DesktopIcon(QStringLiteral("chronometer"), waitingThumbnailSize); + QPixmap pix(value); +@@ -393,6 +394,7 @@ void ThumbnailView::updateThumbnailSize() + painter.drawPixmap((value.width() - icon.width()) / 2, (value.height() - icon.height()) / 2, icon); + painter.end(); + d->mWaitingThumbnail = pix; ++ d->mWaitingThumbnail.setDevicePixelRatio(dpr); + + // Stop smoothing + d->mSmoothThumbnailTimer.stop(); +@@ -406,8 +408,8 @@ void ThumbnailView::updateThumbnailSize() + it.value().mAdjustedPix = QPixmap(); + } + +- emit thumbnailSizeChanged(value); +- emit thumbnailWidthChanged(value.width()); ++ emit thumbnailSizeChanged(value / dpr); ++ emit thumbnailWidthChanged(qRound(value.width() / dpr)); + if (d->mScaleMode != ScaleToFit) { + scheduleDelayedItemsLayout(); + } +@@ -416,11 +418,14 @@ void ThumbnailView::updateThumbnailSize() + + void ThumbnailView::setThumbnailWidth(int width) + { +- if(d->mThumbnailSize.width() == width) { ++ const auto dpr = devicePixelRatioF(); ++ const qreal newWidthF = width * dpr; ++ const int newWidth = qRound(newWidthF); ++ if(d->mThumbnailSize.width() == newWidth) { + return; + } +- int height = round((qreal)width / d->mThumbnailAspectRatio); +- d->mThumbnailSize = QSize(width, height); ++ int height = qRound(newWidthF / d->mThumbnailAspectRatio); ++ d->mThumbnailSize = QSize(newWidth, height); + updateThumbnailSize(); + } + +@@ -443,7 +448,7 @@ qreal ThumbnailView::thumbnailAspectRatio() const + + QSize ThumbnailView::thumbnailSize() const + { +- return d->mThumbnailSize; ++ return d->mThumbnailSize / devicePixelRatioF(); + } + + void ThumbnailView::setThumbnailViewHelper(AbstractThumbnailViewHelper* helper) +@@ -670,6 +675,7 @@ QPixmap ThumbnailView::thumbnailForIndex(const QModelIndex& index, QSize* fullSi + if (fullSize) { + *fullSize = thumbnail.mRealFullSize; + } ++ thumbnail.mAdjustedPix.setDevicePixelRatio(devicePixelRatioF()); + return thumbnail.mAdjustedPix; + } + +@@ -810,7 +816,7 @@ void ThumbnailView::wheelEvent(QWheelEvent* event) + // setThumbnailSize() does not work + //verticalScrollBar()->setSingleStep(d->mThumbnailSize / 5); + if (event->modifiers() == Qt::ControlModifier) { +- int width = d->mThumbnailSize.width() + (event->delta() > 0 ? 1 : -1) * WHEEL_ZOOM_MULTIPLIER; ++ int width = thumbnailSize().width() + (event->delta() > 0 ? 1 : -1) * WHEEL_ZOOM_MULTIPLIER; + width = qMax(int(MinThumbnailSize), qMin(width, int(MaxThumbnailSize))); + setThumbnailWidth(width); + } else { +-- +2.21.0 + diff --git a/gwenview5.changes b/gwenview5.changes index a06310b..e9d88f8 100644 --- a/gwenview5.changes +++ b/gwenview5.changes @@ -8,6 +8,8 @@ Tue Apr 09 20:54:38 UTC 2019 - lbeltrame@kde.org - Changes since 19.03.80: * HiDPI Support for Gwenview (kde#373178) * Fix -Wreturn-type warning for jpeg version check +- Add upstream patch for HiDPI support in thumbnails (kde#373178): + * 0001-Add-HiDPI-support-for-thumbnails.patch ------------------------------------------------------------------- Wed Mar 27 06:40:56 UTC 2019 - lbeltrame@kde.org diff --git a/gwenview5.spec b/gwenview5.spec index 7f4c4c9..8dd2bbf 100644 --- a/gwenview5.spec +++ b/gwenview5.spec @@ -28,6 +28,7 @@ License: GPL-2.0-or-later Group: Productivity/Graphics/Viewers URL: http://www.kde.org Source: gwenview-%{version}.tar.xz +Patch0: 0001-Add-HiDPI-support-for-thumbnails.patch BuildRequires: baloo5-devel BuildRequires: cfitsio-devel BuildRequires: extra-cmake-modules >= %{kf5_version} @@ -81,6 +82,7 @@ hierarchies. %prep %setup -q -n gwenview-%{version} +%autopatch -p1 %build %if 0%{?suse_version} < 1330 From f58b3c55ac65e65da51cd733aabbe4878f9b9e859f87f404fe6c644b84784432 Mon Sep 17 00:00:00 2001 From: Fabian Vogt Date: Sat, 20 Apr 2019 09:05:25 +0000 Subject: [PATCH 4/4] KDE Applications 19.04.0 OBS-URL: https://build.opensuse.org/package/show/KDE:Applications/gwenview5?expand=0&rev=134 --- 0001-Add-HiDPI-support-for-thumbnails.patch | 239 -------------------- gwenview-19.03.90.tar.xz | 3 - gwenview-19.04.0.tar.xz | 3 + gwenview5.changes | 12 + gwenview5.spec | 4 +- 5 files changed, 16 insertions(+), 245 deletions(-) delete mode 100644 0001-Add-HiDPI-support-for-thumbnails.patch delete mode 100644 gwenview-19.03.90.tar.xz create mode 100644 gwenview-19.04.0.tar.xz diff --git a/0001-Add-HiDPI-support-for-thumbnails.patch b/0001-Add-HiDPI-support-for-thumbnails.patch deleted file mode 100644 index 63bf863..0000000 --- a/0001-Add-HiDPI-support-for-thumbnails.patch +++ /dev/null @@ -1,239 +0,0 @@ -From 968c411a99576aa9e7784812e26e054ab290ae27 Mon Sep 17 00:00:00 2001 -From: Alexander Volkov -Date: Sun, 7 Apr 2019 08:01:19 -0600 -Subject: [PATCH] Add HiDPI support for thumbnails - -Summary: -The idea is to localize changes in ThumbnailView as much as possible: -ThumbnailView::thumbnailSize() returns the size in device independent -pixels, i.e. it seems from the outside that ThumbnailView behaves as -well as before this change. But, of course, item delegates must take -into account that ThumbnailView::thumbnailForIndex() will return -a pixmap with the devicePixelRatio set. - -CCBUG: 373178 - -Reviewers: #gwenview, ngraham - -Reviewed By: #gwenview, ngraham - -Subscribers: ngraham - -Tags: #gwenview - -Differential Revision: https://phabricator.kde.org/D20267 ---- - lib/thumbnailview/previewitemdelegate.cpp | 18 ++++++++++------ - lib/thumbnailview/thumbnailbarview.cpp | 17 +++++++++------ - lib/thumbnailview/thumbnailslider.cpp | 2 +- - lib/thumbnailview/thumbnailview.cpp | 26 ++++++++++++++--------- - 4 files changed, 38 insertions(+), 25 deletions(-) - -diff --git a/lib/thumbnailview/previewitemdelegate.cpp b/lib/thumbnailview/previewitemdelegate.cpp -index 974053b8..f910b0c1 100644 ---- a/lib/thumbnailview/previewitemdelegate.cpp -+++ b/lib/thumbnailview/previewitemdelegate.cpp -@@ -164,7 +164,8 @@ struct PreviewItemDelegatePrivate - const int posX = mContextBarActions == PreviewItemDelegate::SelectionAction - ? 0 - : (rect.width() - mContextBar->width()) / 2; -- const int posY = qMax(CONTEXTBAR_MARGIN, mThumbnailSize.height() - thumbnailPix.height() - mContextBar->height()); -+ const int thumbnailPixHeight = qRound(thumbnailPix.height() / thumbnailPix.devicePixelRatio()); -+ const int posY = qMax(CONTEXTBAR_MARGIN, mThumbnailSize.height() - thumbnailPixHeight - mContextBar->height()); - mContextBar->move(rect.topLeft() + QPoint(posX, posY)); - mContextBar->show(); - } -@@ -317,13 +318,15 @@ struct PreviewItemDelegatePrivate - { - const QPoint shadowOffset(-SHADOW_SIZE, -SHADOW_SIZE + 1); - -- int key = rect.height() * 1000 + rect.width(); -+ const auto dpr = painter->device()->devicePixelRatioF(); -+ int key = qRound((rect.height() * 1000 + rect.width()) * dpr); - - ShadowCache::Iterator it = mShadowCache.find(key); - if (it == mShadowCache.end()) { - QSize size = QSize(rect.width() + 2 * SHADOW_SIZE, rect.height() + 2 * SHADOW_SIZE); - QColor color(0, 0, 0, SHADOW_STRENGTH); -- QPixmap shadow = PaintUtils::generateFuzzyRect(size, color, SHADOW_SIZE); -+ QPixmap shadow = PaintUtils::generateFuzzyRect(size * dpr, color, qRound(SHADOW_SIZE * dpr)); -+ shadow.setDevicePixelRatio(dpr); - it = mShadowCache.insert(key, shadow); - } - painter->drawPixmap(rect.topLeft() + shadowOffset, it.value()); -@@ -688,6 +691,7 @@ void PreviewItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & - int thumbnailHeight = d->mThumbnailSize.height(); - QSize fullSize; - QPixmap thumbnailPix = d->mView->thumbnailForIndex(index, &fullSize); -+ QSize thumbnailSize = thumbnailPix.size() / thumbnailPix.devicePixelRatio(); - const KFileItem fileItem = fileItemForIndex(index); - const bool opaque = !thumbnailPix.hasAlphaChannel(); - const bool isDirOrArchive = ArchiveUtils::fileItemIsDirOrArchive(fileItem); -@@ -739,10 +743,10 @@ void PreviewItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & - - // Compute thumbnailRect - QRect thumbnailRect = QRect( -- rect.left() + (rect.width() - thumbnailPix.width()) / 2, -- rect.top() + (thumbnailHeight - thumbnailPix.height()) + ITEM_MARGIN, -- thumbnailPix.width(), -- thumbnailPix.height()); -+ rect.left() + (rect.width() - thumbnailSize.width()) / 2, -+ rect.top() + (thumbnailHeight - thumbnailSize.height()) + ITEM_MARGIN, -+ thumbnailSize.width(), -+ thumbnailSize.height()); - - // Draw background - const QRect backgroundRect = thumbnailRect.adjusted(-ITEM_MARGIN, -ITEM_MARGIN, ITEM_MARGIN, ITEM_MARGIN); -diff --git a/lib/thumbnailview/thumbnailbarview.cpp b/lib/thumbnailview/thumbnailbarview.cpp -index f7e6e9a0..a3cc1930 100644 ---- a/lib/thumbnailview/thumbnailbarview.cpp -+++ b/lib/thumbnailview/thumbnailbarview.cpp -@@ -102,13 +102,15 @@ struct ThumbnailBarItemDelegatePrivate - { - const QPoint shadowOffset(-SHADOW_SIZE, -SHADOW_SIZE + 1); - -- int key = rect.height() * 1000 + rect.width(); -+ const auto dpr = painter->device()->devicePixelRatioF(); -+ int key = qRound((rect.height() * 1000 + rect.width()) * dpr); - - ShadowCache::Iterator it = mShadowCache.find(key); - if (it == mShadowCache.end()) { - QSize size = QSize(rect.width() + 2 * SHADOW_SIZE, rect.height() + 2 * SHADOW_SIZE); - QColor color(0, 0, 0, SHADOW_STRENGTH); -- QPixmap shadow = PaintUtils::generateFuzzyRect(size, color, SHADOW_SIZE); -+ QPixmap shadow = PaintUtils::generateFuzzyRect(size * dpr, color, qRound(SHADOW_SIZE * dpr)); -+ shadow.setDevicePixelRatio(dpr); - it = mShadowCache.insert(key, shadow); - } - painter->drawPixmap(rect.topLeft() + shadowOffset, it.value()); -@@ -175,7 +177,7 @@ QSize ThumbnailBarItemDelegate::sizeHint(const QStyleOptionViewItem & /*option*/ - size = d->mView->gridSize(); - } else { - QPixmap thumbnailPix = d->mView->thumbnailForIndex(index); -- size = thumbnailPix.size(); -+ size = thumbnailPix.size() / thumbnailPix.devicePixelRatio(); - size.rwidth() += ITEM_MARGIN * 2; - size.rheight() += ITEM_MARGIN * 2; - } -@@ -203,6 +205,7 @@ void ThumbnailBarItemDelegate::paint(QPainter * painter, const QStyleOptionViewI - bool isSelected = option.state & QStyle::State_Selected; - bool isCurrent = d->mView->selectionModel()->currentIndex() == index; - QPixmap thumbnailPix = d->mView->thumbnailForIndex(index); -+ QSize thumbnailSize = thumbnailPix.size() / thumbnailPix.devicePixelRatio(); - QRect rect = option.rect; - - QStyleOptionViewItem opt = option; -@@ -219,10 +222,10 @@ void ThumbnailBarItemDelegate::paint(QPainter * painter, const QStyleOptionViewI - // Draw thumbnail - if (!thumbnailPix.isNull()) { - QRect thumbnailRect = QRect( -- rect.left() + (rect.width() - thumbnailPix.width()) / 2, -- rect.top() + (rect.height() - thumbnailPix.height()) / 2 - 1, -- thumbnailPix.width(), -- thumbnailPix.height()); -+ rect.left() + (rect.width() - thumbnailSize.width()) / 2, -+ rect.top() + (rect.height() - thumbnailSize.height()) / 2 - 1, -+ thumbnailSize.width(), -+ thumbnailSize.height()); - - if (!thumbnailPix.hasAlphaChannel()) { - d->drawShadow(painter, thumbnailRect); -diff --git a/lib/thumbnailview/thumbnailslider.cpp b/lib/thumbnailview/thumbnailslider.cpp -index 2c7fa2c9..03fabe26 100644 ---- a/lib/thumbnailview/thumbnailslider.cpp -+++ b/lib/thumbnailview/thumbnailslider.cpp -@@ -65,7 +65,7 @@ void ThumbnailSlider::slotActionTriggered(int actionTriggered) - void ThumbnailSlider::updateToolTip() - { - // FIXME: i18n? -- const int size = slider()->sliderPosition(); -+ const int size = qRound(slider()->sliderPosition() * devicePixelRatioF()); - const QString text = QStringLiteral("%1 x %2").arg(size).arg(size); - slider()->setToolTip(text); - } -diff --git a/lib/thumbnailview/thumbnailview.cpp b/lib/thumbnailview/thumbnailview.cpp -index a076dd1e..072a4479 100644 ---- a/lib/thumbnailview/thumbnailview.cpp -+++ b/lib/thumbnailview/thumbnailview.cpp -@@ -379,11 +379,12 @@ void ThumbnailView::updateThumbnailSize() - { - QSize value = d->mThumbnailSize; - // mWaitingThumbnail -+ const auto dpr = devicePixelRatioF(); - int waitingThumbnailSize; -- if (value.width() > 64) { -- waitingThumbnailSize = 48; -+ if (value.width() > 64 * dpr) { -+ waitingThumbnailSize = qRound(48 * dpr); - } else { -- waitingThumbnailSize = 32; -+ waitingThumbnailSize = qRound(32 * dpr); - } - QPixmap icon = DesktopIcon(QStringLiteral("chronometer"), waitingThumbnailSize); - QPixmap pix(value); -@@ -393,6 +394,7 @@ void ThumbnailView::updateThumbnailSize() - painter.drawPixmap((value.width() - icon.width()) / 2, (value.height() - icon.height()) / 2, icon); - painter.end(); - d->mWaitingThumbnail = pix; -+ d->mWaitingThumbnail.setDevicePixelRatio(dpr); - - // Stop smoothing - d->mSmoothThumbnailTimer.stop(); -@@ -406,8 +408,8 @@ void ThumbnailView::updateThumbnailSize() - it.value().mAdjustedPix = QPixmap(); - } - -- emit thumbnailSizeChanged(value); -- emit thumbnailWidthChanged(value.width()); -+ emit thumbnailSizeChanged(value / dpr); -+ emit thumbnailWidthChanged(qRound(value.width() / dpr)); - if (d->mScaleMode != ScaleToFit) { - scheduleDelayedItemsLayout(); - } -@@ -416,11 +418,14 @@ void ThumbnailView::updateThumbnailSize() - - void ThumbnailView::setThumbnailWidth(int width) - { -- if(d->mThumbnailSize.width() == width) { -+ const auto dpr = devicePixelRatioF(); -+ const qreal newWidthF = width * dpr; -+ const int newWidth = qRound(newWidthF); -+ if(d->mThumbnailSize.width() == newWidth) { - return; - } -- int height = round((qreal)width / d->mThumbnailAspectRatio); -- d->mThumbnailSize = QSize(width, height); -+ int height = qRound(newWidthF / d->mThumbnailAspectRatio); -+ d->mThumbnailSize = QSize(newWidth, height); - updateThumbnailSize(); - } - -@@ -443,7 +448,7 @@ qreal ThumbnailView::thumbnailAspectRatio() const - - QSize ThumbnailView::thumbnailSize() const - { -- return d->mThumbnailSize; -+ return d->mThumbnailSize / devicePixelRatioF(); - } - - void ThumbnailView::setThumbnailViewHelper(AbstractThumbnailViewHelper* helper) -@@ -670,6 +675,7 @@ QPixmap ThumbnailView::thumbnailForIndex(const QModelIndex& index, QSize* fullSi - if (fullSize) { - *fullSize = thumbnail.mRealFullSize; - } -+ thumbnail.mAdjustedPix.setDevicePixelRatio(devicePixelRatioF()); - return thumbnail.mAdjustedPix; - } - -@@ -810,7 +816,7 @@ void ThumbnailView::wheelEvent(QWheelEvent* event) - // setThumbnailSize() does not work - //verticalScrollBar()->setSingleStep(d->mThumbnailSize / 5); - if (event->modifiers() == Qt::ControlModifier) { -- int width = d->mThumbnailSize.width() + (event->delta() > 0 ? 1 : -1) * WHEEL_ZOOM_MULTIPLIER; -+ int width = thumbnailSize().width() + (event->delta() > 0 ? 1 : -1) * WHEEL_ZOOM_MULTIPLIER; - width = qMax(int(MinThumbnailSize), qMin(width, int(MaxThumbnailSize))); - setThumbnailWidth(width); - } else { --- -2.21.0 - diff --git a/gwenview-19.03.90.tar.xz b/gwenview-19.03.90.tar.xz deleted file mode 100644 index 0e3edc6..0000000 --- a/gwenview-19.03.90.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:59172e64e966643c271b575eb9158695d341b1e4999ab6a7311de15f3860ef0d -size 5717368 diff --git a/gwenview-19.04.0.tar.xz b/gwenview-19.04.0.tar.xz new file mode 100644 index 0000000..8406325 --- /dev/null +++ b/gwenview-19.04.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7d422bddf031fa9d5a23459c65ea6dbb5919e964cc194178a864ee98912b46d +size 5717548 diff --git a/gwenview5.changes b/gwenview5.changes index e9d88f8..a10c9f2 100644 --- a/gwenview5.changes +++ b/gwenview5.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Sat Apr 20 06:51:53 UTC 2019 - lbeltrame@kde.org + +- Update to 19.04.0 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/announce-applications-19.04.0.php +- Changes since 19.03.90: + * Add HiDPI support for thumbnails +- Dropped patches, now upstream: + * 0001-Add-HiDPI-support-for-thumbnails.patch + ------------------------------------------------------------------- Tue Apr 09 20:54:38 UTC 2019 - lbeltrame@kde.org diff --git a/gwenview5.spec b/gwenview5.spec index 8dd2bbf..843c5a9 100644 --- a/gwenview5.spec +++ b/gwenview5.spec @@ -21,14 +21,13 @@ %{!?_kapp_version: %define _kapp_version %(echo %{version}| awk -F. '{print $1"."$2}')} %bcond_without lang Name: gwenview5 -Version: 19.03.90 +Version: 19.04.0 Release: 0 Summary: Image Viewer by KDE License: GPL-2.0-or-later Group: Productivity/Graphics/Viewers URL: http://www.kde.org Source: gwenview-%{version}.tar.xz -Patch0: 0001-Add-HiDPI-support-for-thumbnails.patch BuildRequires: baloo5-devel BuildRequires: cfitsio-devel BuildRequires: extra-cmake-modules >= %{kf5_version} @@ -82,7 +81,6 @@ hierarchies. %prep %setup -q -n gwenview-%{version} -%autopatch -p1 %build %if 0%{?suse_version} < 1330