diff options
author | John Tapsell <john.tapsell.ext@basyskom.de> | 2010-06-22 18:29:23 +0900 |
---|---|---|
committer | Sergiy Dubovik <sergiy.dubovik@nokia.com> | 2010-06-22 14:54:23 +0300 |
commit | 669807a0dd9601c8c0df4601529bf77ea8e5e17d (patch) | |
tree | 4ba646c0b320c537db837197f469b8af8d53c26f /src/views/mlabelview_simple.cpp | |
parent | de200633deb7c7bb74cac9900b0a4876e353d185 (diff) |
Changes: MLabelViewSimple - redo setting the clipping of the label widget
RevBy: Marcin Miklas
Details: This replaces
commit dcc8c92ef7079612f98bc8f5fd09b98060c2f8ad
Fixes: NB#175977 MLabelViewSimple - restore clipping state after setting it
The problem was that the Qt code was far more complicated than I had anticipated - it is simply
not possible to manually restore the clipping state, it _has_ to be done via save() and restore()
operations.
Diffstat (limited to 'src/views/mlabelview_simple.cpp')
-rw-r--r-- | src/views/mlabelview_simple.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/views/mlabelview_simple.cpp b/src/views/mlabelview_simple.cpp index 36970dd9..2c1999a5 100644 --- a/src/views/mlabelview_simple.cpp +++ b/src/views/mlabelview_simple.cpp @@ -57,14 +57,14 @@ void MLabelViewSimple::drawContents(QPainter *painter, const QSizeF &size) painter->setPen(model->color().isValid() ? model->color() : style->color()); painter->setFont(viewPrivate->controller->font()); - bool wasClipping = painter->hasClipping(); - QRegion oldClipRegion = painter->clipRegion(); - painter->setClipping(true); - // IntersectClip is needed for the cases when widget has "clip children to parent" flag on - painter->setClipRect(paintingRect, wasClipping?Qt::IntersectClip:Qt::ReplaceClip); + bool needToClip = !paintingRect.contains(QRectF(textOffset, staticText.size())); + if(needToClip) { + painter->save(); + painter->setClipRect(paintingRect, Qt::IntersectClip); + } painter->drawStaticText(textOffset, staticText); - painter->setClipRegion(oldClipRegion); - painter->setClipping(wasClipping); + if(needToClip) + painter->restore(); } bool MLabelViewSimple::resizeEvent(QGraphicsSceneResizeEvent *event) |