From 487ddce3531f6b738affc84edf066bd0ea4a16bb Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Wed, 29 Jul 2015 10:57:05 -0700 Subject: Profile: make sure text is scaled correctly when drawn We had all this wonderful code to scale the text correctly, except we went out of our way to make sure the code wouldn't be called unless something changed on this specific text item. But that's bogus because the scaling depends on external factors like the fontPrintScale. So instead of calling updateText() when attributes of this DiveTextItem change simply call it right before the DiveTextItem gets painted. Signed-off-by: Dirk Hohndel --- qt-ui/profile/divetextitem.cpp | 9 ++++++--- qt-ui/profile/divetextitem.h | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'qt-ui') diff --git a/qt-ui/profile/divetextitem.cpp b/qt-ui/profile/divetextitem.cpp index 4c0137177..b3d5c39aa 100644 --- a/qt-ui/profile/divetextitem.cpp +++ b/qt-ui/profile/divetextitem.cpp @@ -14,11 +14,16 @@ DiveTextItem::DiveTextItem(QGraphicsItem *parent) : QGraphicsItemGroup(parent), textItem->setPen(Qt::NoPen); } +void DiveTextItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + updateText(); + QGraphicsItemGroup::paint(painter, option, widget); +} + void DiveTextItem::setAlignment(int alignFlags) { if (alignFlags != internalAlignFlags) { internalAlignFlags = alignFlags; - updateText(); } } @@ -31,7 +36,6 @@ void DiveTextItem::setScale(double newscale) { if (scale != newscale) { scale = newscale; - updateText(); } } @@ -39,7 +43,6 @@ void DiveTextItem::setText(const QString &t) { if (internalText != t) { internalText = t; - updateText(); } } diff --git a/qt-ui/profile/divetextitem.h b/qt-ui/profile/divetextitem.h index 0c0ec4b86..26e45d746 100644 --- a/qt-ui/profile/divetextitem.h +++ b/qt-ui/profile/divetextitem.h @@ -18,6 +18,7 @@ public: void setScale(double newscale); void setBrush(const QBrush &brush); const QString &text(); + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); private: void updateText(); -- cgit v1.2.3-70-g09d2