From dbc3b971787061e19652f3f2b20bd01615ab12458688dcf829eeff03ac63b326 Mon Sep 17 00:00:00 2001 From: Christophe Marin Date: Thu, 20 Jun 2024 08:43:37 +0000 Subject: [PATCH] - Add upstream fix (kde#488295): * 0001-Restore-proper-devicepixelratio-when-extracting-from.patch - Rebase 0001-Revert-Support-for-fractional-scaling.patch OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks/kf6-ksvg?expand=0&rev=13 --- ...evicepixelratio-when-extracting-from.patch | 40 +++++++++++++++++++ ...evert-Support-for-fractional-scaling.patch | 38 +++++++++--------- kf6-ksvg.changes | 7 ++++ kf6-ksvg.spec | 2 + 4 files changed, 68 insertions(+), 19 deletions(-) create mode 100644 0001-Restore-proper-devicepixelratio-when-extracting-from.patch diff --git a/0001-Restore-proper-devicepixelratio-when-extracting-from.patch b/0001-Restore-proper-devicepixelratio-when-extracting-from.patch new file mode 100644 index 0000000..805eb31 --- /dev/null +++ b/0001-Restore-proper-devicepixelratio-when-extracting-from.patch @@ -0,0 +1,40 @@ +From 74f9f9cbd226407f8cde08c5cd5a711444e2775d Mon Sep 17 00:00:00 2001 +From: Marco Martin +Date: Wed, 19 Jun 2024 09:11:56 +0000 +Subject: [PATCH] Restore proper devicepixelratio when extracting from cache + +like in base Svg, also in FrameSvg restore the proper devicepixelratio +when getting the image from the cache, as KImageCache doesn't save or +restore the information about it. + +This fixes blur region mask sometimes wrong behind floating panels + +BUG:488295 +--- + src/ksvg/framesvg.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/ksvg/framesvg.cpp b/src/ksvg/framesvg.cpp +index c1d22b1a..3b094abd 100644 +--- a/src/ksvg/framesvg.cpp ++++ b/src/ksvg/framesvg.cpp +@@ -524,10 +524,16 @@ void FrameSvgPrivate::generateBackground(const QSharedPointer &frame) + QPixmap overlay; + if (q->isUsingRenderingCache()) { + frameCached = q->imageSet()->d->findInCache(QString::number(id), frame->cachedBackground, frame->lastModified) && !frame->cachedBackground.isNull(); ++ if (frameCached) { ++ frame->cachedBackground.setDevicePixelRatio(q->devicePixelRatio()); ++ } + + if (overlayAvailable) { + const size_t overlayId = qHash(cacheId(frame.data(), frame->prefix % QLatin1String("overlay"))); + overlayCached = q->imageSet()->d->findInCache(QString::number(overlayId), overlay, frame->lastModified) && !overlay.isNull(); ++ if (overlayCached) { ++ overlay.setDevicePixelRatio(q->devicePixelRatio()); ++ } + } + } + +-- +2.45.2 + diff --git a/0001-Revert-Support-for-fractional-scaling.patch b/0001-Revert-Support-for-fractional-scaling.patch index c4c40fa..d8b3bde 100644 --- a/0001-Revert-Support-for-fractional-scaling.patch +++ b/0001-Revert-Support-for-fractional-scaling.patch @@ -1,4 +1,4 @@ -From 42fd5bfb92893cd6e90e7ea0b88e33f4636d2ebf Mon Sep 17 00:00:00 2001 +From ca06055c3eaeb716109f8126cd3e3e1976ed3e1c Mon Sep 17 00:00:00 2001 From: Fabian Vogt Date: Sun, 9 Jun 2024 21:42:10 +0200 Subject: [PATCH] Revert "Support for fractional scaling" @@ -15,7 +15,7 @@ This reverts commit 3dd28b0640d2c613654f992ad3453a0b92beebe1. 7 files changed, 115 insertions(+), 120 deletions(-) diff --git a/src/declarativeimports/framesvgitem.cpp b/src/declarativeimports/framesvgitem.cpp -index 56c2b3a8..678bdcbe 100644 +index 56c2b3a..678bdcb 100644 --- a/src/declarativeimports/framesvgitem.cpp +++ b/src/declarativeimports/framesvgitem.cpp @@ -122,7 +122,7 @@ public: @@ -49,7 +49,7 @@ index 56c2b3a8..678bdcbe 100644 m_frameSvg->setDevicePixelRatio(newDevicePixelRatio); m_textureChanged = true; diff --git a/src/declarativeimports/svgitem.cpp b/src/declarativeimports/svgitem.cpp -index bec45330..aa1f2a26 100644 +index bec4533..aa1f2a2 100644 --- a/src/declarativeimports/svgitem.cpp +++ b/src/declarativeimports/svgitem.cpp @@ -16,6 +16,8 @@ @@ -74,7 +74,7 @@ index bec45330..aa1f2a26 100644 m_svg->setDevicePixelRatio(newDevicePixelRatio); m_textureChanged = true; diff --git a/src/ksvg/framesvg.cpp b/src/ksvg/framesvg.cpp -index c1d22b1a..ecb5f5b8 100644 +index 3b094ab..f2c8663 100644 --- a/src/ksvg/framesvg.cpp +++ b/src/ksvg/framesvg.cpp @@ -15,7 +15,7 @@ @@ -105,7 +105,7 @@ index c1d22b1a..ecb5f5b8 100644 } return maskFrame->cachedBackground; -@@ -536,8 +539,8 @@ void FrameSvgPrivate::generateBackground(const QSharedPointer &frame) +@@ -542,8 +545,8 @@ void FrameSvgPrivate::generateBackground(const QSharedPointer &frame) } // Overlays @@ -116,7 +116,7 @@ index c1d22b1a..ecb5f5b8 100644 if (overlayAvailable && !overlayCached) { overlaySize = q->elementSize(frame->prefix % QLatin1String("overlay")).toSize(); -@@ -563,13 +566,13 @@ void FrameSvgPrivate::generateBackground(const QSharedPointer &frame) +@@ -569,13 +572,13 @@ void FrameSvgPrivate::generateBackground(const QSharedPointer &frame) // Tiling? if (q->hasElement(frame->prefix % QLatin1String("hint-overlay-tile-horizontal")) || q->hasElement(frame->prefix % QLatin1String("hint-overlay-tile-vertical"))) { @@ -133,7 +133,7 @@ index c1d22b1a..ecb5f5b8 100644 } overlayPainter.end(); -@@ -582,14 +585,14 @@ void FrameSvgPrivate::generateBackground(const QSharedPointer &frame) +@@ -588,14 +591,14 @@ void FrameSvgPrivate::generateBackground(const QSharedPointer &frame) if (!overlay.isNull()) { QPainter p(&frame->cachedBackground); p.setCompositionMode(QPainter::CompositionMode_SourceOver); @@ -150,7 +150,7 @@ index c1d22b1a..ecb5f5b8 100644 if (!size.isValid()) { #ifndef NDEBUG -@@ -602,14 +605,13 @@ void FrameSvgPrivate::generateFrameBackground(const QSharedPointer &f +@@ -608,14 +611,13 @@ void FrameSvgPrivate::generateFrameBackground(const QSharedPointer &f return; } @@ -167,7 +167,7 @@ index c1d22b1a..ecb5f5b8 100644 paintCenter(p, frame, contentRect, size); paintCorner(p, frame, FrameSvg::LeftBorder | FrameSvg::TopBorder, contentRect); -@@ -618,26 +620,25 @@ void FrameSvgPrivate::generateFrameBackground(const QSharedPointer &f +@@ -624,26 +626,25 @@ void FrameSvgPrivate::generateFrameBackground(const QSharedPointer &f paintCorner(p, frame, FrameSvg::RightBorder | FrameSvg::BottomBorder, contentRect); // Sides @@ -207,7 +207,7 @@ index c1d22b1a..ecb5f5b8 100644 if (frame->enabledBorders & FrameSvg::LeftBorder && q->hasElement(frame->prefix % QLatin1String("left"))) { contentRect.translate(frame->leftWidth * q->devicePixelRatio(), 0); } -@@ -659,7 +660,7 @@ void FrameSvgPrivate::updateFrameData(uint lastModified, UpdateType updateType) +@@ -665,7 +666,7 @@ void FrameSvgPrivate::updateFrameData(uint lastModified, UpdateType updateType) const QString oldPath = fd->imagePath; const FrameSvg::EnabledBorders oldBorders = fd->enabledBorders; @@ -216,7 +216,7 @@ index c1d22b1a..ecb5f5b8 100644 fd->enabledBorders = enabledBorders; fd->frameSize = pendingFrameSize; -@@ -716,28 +717,27 @@ void FrameSvgPrivate::updateFrameData(uint lastModified, UpdateType updateType) +@@ -722,28 +723,27 @@ void FrameSvgPrivate::updateFrameData(uint lastModified, UpdateType updateType) } } @@ -251,7 +251,7 @@ index c1d22b1a..ecb5f5b8 100644 } else { q->paint(&p, FrameSvgHelpers::sectionRect(FrameSvg::NoBorder, contentRect, fullSize * q->devicePixelRatio()), centerElementId); } -@@ -746,7 +746,7 @@ void FrameSvgPrivate::paintCenter(QPainter &p, const QSharedPointer & +@@ -752,7 +752,7 @@ void FrameSvgPrivate::paintCenter(QPainter &p, const QSharedPointer & if (frame->composeOverBorder) { p.setCompositionMode(QPainter::CompositionMode_DestinationIn); @@ -260,7 +260,7 @@ index c1d22b1a..ecb5f5b8 100644 p.setCompositionMode(QPainter::CompositionMode_SourceOver); } } -@@ -754,51 +754,35 @@ void FrameSvgPrivate::paintCenter(QPainter &p, const QSharedPointer & +@@ -760,51 +760,35 @@ void FrameSvgPrivate::paintCenter(QPainter &p, const QSharedPointer & void FrameSvgPrivate::paintBorder(QPainter &p, const QSharedPointer &frame, const FrameSvg::EnabledBorders borders, @@ -319,7 +319,7 @@ index c1d22b1a..ecb5f5b8 100644 } } -@@ -846,7 +830,7 @@ void FrameSvgPrivate::updateSizes(FrameData *frame) const +@@ -852,7 +836,7 @@ void FrameSvgPrivate::updateSizes(FrameData *frame) const // qCDebug(LOG_KSVG) << "!!!!!!!!!!!!!!!!!!!!!! updating sizes" << prefix; Q_ASSERT(frame); @@ -329,7 +329,7 @@ index c1d22b1a..ecb5f5b8 100644 if (!frame->cachedBackground.isNull()) { frame->cachedBackground = QPixmap(); diff --git a/src/ksvg/private/framesvg_helpers.h b/src/ksvg/private/framesvg_helpers.h -index 95cd6ba8..691aa3c1 100644 +index 95cd6ba..691aa3c 100644 --- a/src/ksvg/private/framesvg_helpers.h +++ b/src/ksvg/private/framesvg_helpers.h @@ -45,7 +45,7 @@ QString borderToElementId(FrameSvg::EnabledBorders borders) @@ -379,7 +379,7 @@ index 95cd6ba8..691aa3c1 100644 } diff --git a/src/ksvg/private/framesvg_p.h b/src/ksvg/private/framesvg_p.h -index 463b2ee4..2b9e881d 100644 +index 463b2ee..2b9e881 100644 --- a/src/ksvg/private/framesvg_p.h +++ b/src/ksvg/private/framesvg_p.h @@ -78,39 +78,38 @@ public: @@ -486,7 +486,7 @@ index 463b2ee4..2b9e881d 100644 static QHash>> s_sharedFrames; diff --git a/src/ksvg/private/svg_p.h b/src/ksvg/private/svg_p.h -index 818a4777..bb80c753 100644 +index 818a477..bb80c75 100644 --- a/src/ksvg/private/svg_p.h +++ b/src/ksvg/private/svg_p.h @@ -138,8 +138,8 @@ public: @@ -510,7 +510,7 @@ index 818a4777..bb80c753 100644 }; } diff --git a/src/ksvg/svg.cpp b/src/ksvg/svg.cpp -index 1bdafd6b..01ce0581 100644 +index 1bdafd6..01ce058 100644 --- a/src/ksvg/svg.cpp +++ b/src/ksvg/svg.cpp @@ -272,7 +272,7 @@ void SvgRectsCache::dropImageFromCache(const QString &path) @@ -603,5 +603,5 @@ index 1bdafd6b..01ce0581 100644 painter->drawPixmap(x, y, pix, 0, 0, pix.size().width(), pix.size().height()); } -- -2.45.1 +2.45.2 diff --git a/kf6-ksvg.changes b/kf6-ksvg.changes index d1771c0..7d8696c 100644 --- a/kf6-ksvg.changes +++ b/kf6-ksvg.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Jun 19 20:38:02 UTC 2024 - Christophe Marin + +- Add upstream fix (kde#488295): + * 0001-Restore-proper-devicepixelratio-when-extracting-from.patch +- Rebase 0001-Revert-Support-for-fractional-scaling.patch + ------------------------------------------------------------------- Sun Jun 9 20:14:24 UTC 2024 - Fabian Vogt diff --git a/kf6-ksvg.spec b/kf6-ksvg.spec index e19a8b6..763657f 100644 --- a/kf6-ksvg.spec +++ b/kf6-ksvg.spec @@ -35,6 +35,8 @@ Source: %{rname}-%{version}.tar.xz Source1: %{rname}-%{version}.tar.xz.sig Source2: frameworks.keyring %endif +# PATCH-FIX-UPSTREAM +Patch0: 0001-Restore-proper-devicepixelratio-when-extracting-from.patch # PATCH-FIX-OPENSUSE Patch1: 0001-Revert-Support-for-fractional-scaling.patch BuildRequires: doxygen