From cbd0a328a078513b65f61273c5a547c5437f80d3 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 | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/engraving/rendering/dev/paint.cpp b/src/engraving/rendering/dev/paint.cpp index fa9f986ba10a1..1f9c940fbd622 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,6 +102,7 @@ void Paint::paintScore(draw::Painter* painter, Score* score, const IScoreRendere } drawRect = opt.frameRect; + clipRect = opt.frameRect.translated(-pagePos).intersect(clipRect); } else { drawRect = pageAbsRect; } @@ -129,21 +131,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);