diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/quick/items/context2d/qquickcontext2d.cpp | 6 | ||||
| -rw-r--r-- | src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp | 7 | ||||
| -rw-r--r-- | src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h | 3 |
3 files changed, 10 insertions, 6 deletions
diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index 28c84facb5..d9ac3abdc3 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -3548,7 +3548,7 @@ void QQuickContext2D::clip() state.clip = true; state.clipPath = clipPath; } - buffer()->clip(state.clipPath); + buffer()->clip(state.clip, state.clipPath); } void QQuickContext2D::stroke() @@ -4283,8 +4283,8 @@ void QQuickContext2D::popState() if (newState.miterLimit != state.miterLimit) buffer()->setMiterLimit(newState.miterLimit); - if (newState.clip && (!state.clip || newState.clipPath != state.clipPath)) - buffer()->clip(newState.clipPath); + if (newState.clip != state.clip || newState.clipPath != state.clipPath) + buffer()->clip(newState.clip, newState.clipPath); if (newState.shadowBlur != state.shadowBlur) buffer()->setShadowBlur(newState.shadowBlur); diff --git a/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp b/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp index 9e0a924462..a52f1c8cd2 100644 --- a/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp +++ b/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp @@ -207,6 +207,7 @@ void QQuickContext2DCommandBuffer::setPainterState(QPainter* p, const QQuickCont if (state.globalCompositeOperation != p->compositionMode()) p->setCompositionMode(state.globalCompositeOperation); + p->setClipping(state.clip); if (state.clip) p->setClipPath(state.clipPath); } @@ -383,9 +384,11 @@ void QQuickContext2DCommandBuffer::replay(QPainter* p, QQuickContext2D::State& s } case QQuickContext2D::Clip: { + state.clip = takeBool(); state.clipPath = takePath(); - p->setClipping(true); - p->setClipPath(state.clipPath); + p->setClipping(state.clip); + if (state.clip) + p->setClipPath(state.clipPath); break; } case QQuickContext2D::GlobalAlpha: diff --git a/src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h b/src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h index 9b2fde33d8..4e6232ac7f 100644 --- a/src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h +++ b/src/quick/items/context2d/qquickcontext2dcommandbuffer_p.h @@ -145,9 +145,10 @@ public: pathes << path; } - inline void clip(const QPainterPath& path) + inline void clip(bool enabled, const QPainterPath& path) { commands << QQuickContext2D::Clip; + bools << enabled; pathes << path; } |
