diff options
Diffstat (limited to 'src/quick/items/context2d/qquickcontext2d.cpp')
-rw-r--r-- | src/quick/items/context2d/qquickcontext2d.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index 3481651b1e..a7d5f7d65f 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -3605,10 +3605,12 @@ void QQuickContext2D::clip() QPainterPath clipPath = m_path; clipPath.closeSubpath(); - if (!state.clipPath.isEmpty()) + if (state.clip) { state.clipPath = clipPath.intersected(state.clipPath); - else + } else { + state.clip = true; state.clipPath = clipPath; + } buffer()->clip(state.clipPath); } @@ -4277,9 +4279,8 @@ void QQuickContext2D::popState() if (newState.miterLimit != state.miterLimit) buffer()->setMiterLimit(newState.miterLimit); - if (newState.clipPath != state.clipPath) { + if (newState.clip && (!state.clip || newState.clipPath != state.clipPath)) buffer()->clip(newState.clipPath); - } if (newState.shadowBlur != state.shadowBlur) buffer()->setShadowBlur(newState.shadowBlur); @@ -4307,12 +4308,6 @@ void QQuickContext2D::reset() m_path = QPainterPath(); - QPainterPath defaultClipPath; - - QRect r(0, 0, m_canvas->canvasSize().width(), m_canvas->canvasSize().height()); - r = r.united(m_canvas->canvasWindow().toRect()); - defaultClipPath.addRect(r); - newState.clipPath = defaultClipPath; newState.clipPath.setFillRule(Qt::WindingFill); m_stateStack.clear(); |