[graphics/krita] libs/ui/tool: Use painter save and restore
Emmet O'Neill <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 7d8bd16b878dee6b0df5be5e4db83d700aabbb9b by Emmet O'Neill, on behalf of Le Tien Dat.
Committed on 13/08/2026 at 23:16.
Pushed by emmetoneill into branch 'master'.
Use painter save and restore
M +6 -3 libs/ui/tool/KisAsyncColorSamplerHelper.cpp
https://invent.kde.org/graphics/krita/-/commit/7d8bd16b878dee6b0df5be5e4db83d700aabbb9b
diff --git a/libs/ui/tool/KisAsyncColorSamplerHelper.cpp b/libs/ui/tool/KisAsyncColorSamplerHelper.cpp
index 98c90e3d53d..bed260c2eab 100644
--- a/libs/ui/tool/KisAsyncColorSamplerHelper.cpp
+++ b/libs/ui/tool/KisAsyncColorSamplerHelper.cpp
@@ -584,6 +584,8 @@ void KisAsyncColorSamplerHelper::paintCircle(QPainter &gc,
}
void KisAsyncColorSamplerHelper::paintCircleCanvasPreview(QPainter &gc, const QRectF &viewRectF, const QRectF &sampleDocRectF, const QPainterPath &clip) {
+ gc.save();
+
QRectF canvasSampleRectF = m_d->canvas->image()->documentToPixel(sampleDocRectF);
// Copy a piece of canvas image with size = (previewDocRect size) / (zoom preview scale)
@@ -597,10 +599,9 @@ void KisAsyncColorSamplerHelper::paintCircleCanvasPreview(QPainter &gc, const QR
// drawImage will scale it up that many times, thus achieving the zoom effect
gc.drawImage(viewRectF, canvasPreview);
- gc.setClipPath(QPainterPath(), Qt::NoClip);
+ gc.restore();
}
-// TODO: Fix color sampler run away when REALLY zoomed in
// Won't show opacity because the color sampled doesn't respect opacity either
void KisAsyncColorSamplerHelper::paintCircleReferenceImagePreview(QPainter &gc, const QRectF &viewRectF, const QRectF &sampleDocRectF, const QPainterPath &clip) {
KisDocument *doc = m_d->canvas->viewManager()->document();
@@ -608,6 +609,8 @@ void KisAsyncColorSamplerHelper::paintCircleReferenceImagePreview(QPainter &gc,
KisReferenceImagesLayerSP refLayer = doc->referenceImagesLayer();
if (!refLayer) return;
+ gc.save();
+
gc.setCompositionMode(QPainter::CompositionMode_SourceOver);
gc.setClipPath(clip);
@@ -644,7 +647,7 @@ void KisAsyncColorSamplerHelper::paintCircleReferenceImagePreview(QPainter &gc,
gc.translate(-viewRectF.center());
}
- gc.setClipPath(QPainterPath(), Qt::NoClip);
+ gc.restore();
}
void KisAsyncColorSamplerHelper::slotAddSamplingJob(const QPointF &docPoint)