From b3429c37f329598d9cf02b740567f3ee895339e5 Mon Sep 17 00:00:00 2001 From: Dylan Nicholson Date: Tue, 2 Apr 2024 07:22:24 +1100 Subject: [PATCH] Fix #7819 - adjustment to previous page-clipping fix --- src/engraving/rendering/dev/paint.cpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/engraving/rendering/dev/paint.cpp b/src/engraving/rendering/dev/paint.cpp index fa9f986ba10a1..e74fed001c390 100644 --- a/src/engraving/rendering/dev/paint.cpp +++ b/src/engraving/rendering/dev/paint.cpp @@ -90,6 +90,7 @@ void Paint::paintScore(draw::Painter* painter, Score* score, const IScoreRendere //! NOTE Check draw rect, usually for optimisation drawing on screen (draw only what we see) RectF drawRect; + RectF clipRect = pageRect; RectF pageAbsRect = pageRect.translated(pagePos); if (opt.frameRect.isValid()) { if (pageAbsRect.right() < opt.frameRect.left()) { @@ -101,7 +102,9 @@ void Paint::paintScore(draw::Painter* painter, Score* score, const IScoreRendere } drawRect = opt.frameRect; - } else { + clipRect = opt.frameRect.translated(-pagePos).intersect(clipRect); + } + else { drawRect = pageAbsRect; } @@ -129,21 +132,14 @@ void Paint::paintScore(draw::Painter* painter, Score* score, const IScoreRendere } // Draw page elements - bool disableClipping = false; - - if (!painter->hasClipping()) { - painter->setClipping(true); - painter->setClipRect(pageRect); - disableClipping = true; - } + painter->setClipping(true); + painter->setClipRect(clipRect); std::vector elements = page->items(drawRect.translated(-pagePos)); paintItems(*painter, elements); //DebugPaint::paintPageTree(*painter, page); - if (disableClipping) { - painter->setClipping(false); - } + painter->setClipping(false); if (!opt.isPrinting) { DebugPaint::paintPageDebug(*painter, page, elements); @@ -153,7 +149,8 @@ void Paint::paintScore(draw::Painter* painter, Score* score, const IScoreRendere if (opt.isMultiPage) { painter->translate(-pagePos); - } else if (opt.trimMarginPixelSize >= 0) { + } + else if (opt.trimMarginPixelSize >= 0) { painter->translate(pageRect.topLeft()); }