From 1933f3c224ba1aea44e6671541aebcd3afe1f082 Mon Sep 17 00:00:00 2001 From: Ilia Ryabokon Date: Fri, 13 Dec 2013 13:51:32 +0300 Subject: [PATCH] Removed "setText()" from the paint event of the UBGraphicsTextItem --- src/domain/UBGraphicsTextItem.cpp | 11 +++++------ src/domain/UBGraphicsTextItem.h | 4 +++- src/domain/UBGraphicsTextItemDelegate.cpp | 6 ++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index 3a4fc0d2..2d0e0ecc 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -39,7 +39,6 @@ #include "core/UBSettings.h" #include "core/memcheck.h" - QColor UBGraphicsTextItem::lastUsedTextColor; UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) : @@ -47,7 +46,9 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) : , UBGraphicsItem() , mMultiClickState(0) , mLastMousePressTime(QTime::currentTime()) + , mTypeTextHereLabel(tr("")) { + mEmptyTextWidth = QFontMetrics(font()).width(mTypeTextHereLabel); setDelegate(new UBGraphicsTextItemDelegate(this, 0)); // TODO claudio remove this because in contrast with the fact the frame should be created on demand. @@ -56,8 +57,6 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) : Delegate()->setUBFlag(GF_FLIPPABLE_ALL_AXIS, false); Delegate()->setUBFlag(GF_REVOLVABLE, true); - mTypeTextHereLabel = tr(""); - setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly @@ -247,8 +246,9 @@ void UBGraphicsTextItem::paint(QPainter *painter, const QStyleOptionGraphicsItem if (widget == UBApplication::boardController->controlView()->viewport() && !isSelected() && toPlainText().isEmpty()) { - QFontMetrics fm(font()); - setTextWidth(fm.width(mTypeTextHereLabel)); +// QFontMetrics fm(font()); +// setTextWidth(fm.width(mTypeTextHereLabel)); + painter->setFont(font()); painter->setPen(UBSettings::paletteColor); painter->drawText(boundingRect(), Qt::AlignCenter, mTypeTextHereLabel); @@ -307,7 +307,6 @@ QPainterPath UBGraphicsTextItem::shape() const void UBGraphicsTextItem::setTextWidth(qreal width) { - QFontMetrics fm(font()); qreal strictMin = 155; // the size of the font customization panel qreal newWidth = qMax(strictMin, width); diff --git a/src/domain/UBGraphicsTextItem.h b/src/domain/UBGraphicsTextItem.h index fd7e2af4..b25b3837 100644 --- a/src/domain/UBGraphicsTextItem.h +++ b/src/domain/UBGraphicsTextItem.h @@ -98,6 +98,9 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes void setSelected(bool selected); + QString mTypeTextHereLabel; + int mEmptyTextWidth; + signals: void textUndoCommandAdded(UBGraphicsTextItem *textItem); @@ -121,7 +124,6 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes int mMultiClickState; QTime mLastMousePressTime; - QString mTypeTextHereLabel; QColor mColorOnDarkBackground; QColor mColorOnLightBackground; diff --git a/src/domain/UBGraphicsTextItemDelegate.cpp b/src/domain/UBGraphicsTextItemDelegate.cpp index b724494b..16d29dc0 100644 --- a/src/domain/UBGraphicsTextItemDelegate.cpp +++ b/src/domain/UBGraphicsTextItemDelegate.cpp @@ -726,5 +726,11 @@ QVariant UBGraphicsTextItemDelegate::itemChange(QGraphicsItem::GraphicsItemChang } } } + + if (value.toBool() == false && delegated()->document()->toPlainText().isEmpty()) { + int wdth = QFontMetrics(delegated()->font()).width(delegated()->mTypeTextHereLabel); + delegated()->setTextWidth(qMax(wdth, (int)(delegated()->textWidth()))); + } + return UBGraphicsItemDelegate::itemChange(change, value); }