aboutsummaryrefslogtreecommitdiff
path: root/src/views/mlabelview_simple.cpp
diff options
context:
space:
mode:
authorJohn Tapsell <john.tapsell.ext@basyskom.de>2010-06-22 18:29:23 +0900
committerSergiy Dubovik <sergiy.dubovik@nokia.com>2010-06-22 14:54:23 +0300
commit669807a0dd9601c8c0df4601529bf77ea8e5e17d (patch)
tree4ba646c0b320c537db837197f469b8af8d53c26f /src/views/mlabelview_simple.cpp
parentde200633deb7c7bb74cac9900b0a4876e353d185 (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.cpp14
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)