summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-12-21 02:01:35 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-12-21 02:01:35 (GMT)
commitb0d54b07752e9e51b02eba4cb6066f91e71c3069 (patch)
tree7f36deb4076d3536b59ee3ae4718b1884c0703c4 /src/declarative
parent88e759680246f64bd7d1a7636099ac0565506453 (diff)
downloadQt-b0d54b07752e9e51b02eba4cb6066f91e71c3069.zip
Qt-b0d54b07752e9e51b02eba4cb6066f91e71c3069.tar.gz
Qt-b0d54b07752e9e51b02eba4cb6066f91e71c3069.tar.bz2
Optimization: don't use QTextControl in Text element
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/graphicsitems/qmlgraphicstext.cpp36
-rw-r--r--src/declarative/graphicsitems/qmlgraphicstext_p_p.h4
2 files changed, 15 insertions, 25 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicstext.cpp b/src/declarative/graphicsitems/qmlgraphicstext.cpp
index 52d68fd..459541e 100644
--- a/src/declarative/graphicsitems/qmlgraphicstext.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicstext.cpp
@@ -50,10 +50,9 @@
#include <QTextCursor>
#include <QGraphicsSceneMouseEvent>
#include <QPainter>
+#include <QAbstractTextDocumentLayout>
#include <qmath.h>
-#include <private/qtextcontrol_p.h>
-
QT_BEGIN_NAMESPACE
QML_DEFINE_TYPE(Qt,4,6,Text,QmlGraphicsText)
@@ -159,11 +158,8 @@ void QmlGraphicsText::setText(const QString &n)
d->richText = d->format == RichText || (d->format == AutoText && Qt::mightBeRichText(n));
if (d->richText) {
- if (!d->doc)
- {
- d->control = new QTextControl(this);
- d->control->setTextInteractionFlags(Qt::TextBrowserInteraction);
- d->doc = d->control->document();
+ if (!d->doc) {
+ d->doc = new QTextDocument(this);
d->doc->setDocumentMargin(0);
}
d->doc->setHtml(n);
@@ -399,11 +395,8 @@ void QmlGraphicsText::setTextFormat(TextFormat format)
d->updateSize();
d->markImgDirty();
} else if (!wasRich && d->richText) {
- if (!d->doc)
- {
- d->control = new QTextControl(this);
- d->control->setTextInteractionFlags(Qt::TextBrowserInteraction);
- d->doc = d->control->document();
+ if (!d->doc) {
+ d->doc = new QTextDocument(this);
d->doc->setDocumentMargin(0);
}
d->doc->setHtml(d->text);
@@ -643,19 +636,18 @@ QPixmap QmlGraphicsTextPrivate::richTextImage(bool drawStyle)
img.fill(Qt::transparent);
QPainter p(&img);
+ QAbstractTextDocumentLayout::PaintContext context;
+
if (drawStyle) {
- QPalette pal = control->palette();
- pal.setColor(QPalette::Text, styleColor);
- control->setPalette(pal);
+ context.palette.setColor(QPalette::Text, styleColor);
+ // ### Do we really want this?
QTextOption colorOption;
colorOption.setFlags(QTextOption::SuppressColors);
doc->setDefaultTextOption(colorOption);
} else {
- QPalette pal = control->palette();
- pal.setColor(QPalette::Text, color);
- control->setPalette(pal);
+ context.palette.setColor(QPalette::Text, color);
}
- control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
+ doc->documentLayout()->draw(&p, context);
if (drawStyle)
doc->setDefaultTextOption(QTextOption());
return img;
@@ -790,11 +782,11 @@ void QmlGraphicsText::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QmlGraphicsText);
- if (!d->richText || !d->doc || d->control->anchorAt(event->pos()).isEmpty()) {
+ if (!d->richText || !d->doc || d->doc->documentLayout()->anchorAt(event->pos()).isEmpty()) {
event->setAccepted(false);
d->activeLink = QString();
} else {
- d->activeLink = d->control->anchorAt(event->pos());
+ d->activeLink = d->doc->documentLayout()->anchorAt(event->pos());
}
// ### may malfunction if two of the same links are clicked & dragged onto each other)
@@ -819,7 +811,7 @@ void QmlGraphicsText::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Q_D(QmlGraphicsText);
// ### confirm the link, and send a signal out
- if (d->richText && d->doc && d->activeLink == d->control->anchorAt(event->pos()))
+ if (d->richText && d->doc && d->activeLink == d->doc->documentLayout()->anchorAt(event->pos()))
emit linkActivated(d->activeLink);
else
event->setAccepted(false);
diff --git a/src/declarative/graphicsitems/qmlgraphicstext_p_p.h b/src/declarative/graphicsitems/qmlgraphicstext_p_p.h
index 7e77c69..79d1a4f 100644
--- a/src/declarative/graphicsitems/qmlgraphicstext_p_p.h
+++ b/src/declarative/graphicsitems/qmlgraphicstext_p_p.h
@@ -64,7 +64,6 @@ QT_BEGIN_NAMESPACE
class QTextLayout;
class QTextDocument;
-class QTextControl;
class QmlGraphicsTextPrivate : public QmlGraphicsItemPrivate
{
@@ -73,7 +72,7 @@ public:
QmlGraphicsTextPrivate()
: color((QRgb)0), style(QmlGraphicsText::Normal), imgDirty(true),
hAlign(QmlGraphicsText::AlignLeft), vAlign(QmlGraphicsText::AlignTop), elideMode(QmlGraphicsText::ElideNone),
- dirty(true), wrap(false), richText(false), singleline(false), control(0), doc(0),
+ dirty(true), wrap(false), richText(false), singleline(false), doc(0),
format(QmlGraphicsText::AutoText)
{
}
@@ -112,7 +111,6 @@ public:
bool wrap:1;
bool richText:1;
bool singleline:1;
- QTextControl *control;
QTextDocument *doc;
QTextLayout layout;
QSize cachedLayoutSize;