summaryrefslogtreecommitdiffstats
path: root/src/declarative/graphicsitems/qdeclarativetextedit.cpp
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2011-01-18 00:59:34 (GMT)
committerMartin Jones <martin.jones@nokia.com>2011-01-18 00:59:34 (GMT)
commitf111e97adf93a933351eb5658b33a5820097757a (patch)
treee0c32453efddcbd7054cb6d52cc365b4ee78b10d /src/declarative/graphicsitems/qdeclarativetextedit.cpp
parent2479c1b17ca2399c9df94dd7e1b66d3a3a896a5c (diff)
downloadQt-f111e97adf93a933351eb5658b33a5820097757a.zip
Qt-f111e97adf93a933351eb5658b33a5820097757a.tar.gz
Qt-f111e97adf93a933351eb5658b33a5820097757a.tar.bz2
Request font sizes with only 0.5pt resolution.
When animating pointSize avoid generating a huge number of fonts with slightly different point sizes. Task-number: QTBUG-13960 Reviewed-by: Aaron Kennedy
Diffstat (limited to 'src/declarative/graphicsitems/qdeclarativetextedit.cpp')
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit.cpp29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
index 675f8d9..42f66c3 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
@@ -326,22 +326,35 @@ void QDeclarativeTextEdit::setTextFormat(TextFormat format)
QFont QDeclarativeTextEdit::font() const
{
Q_D(const QDeclarativeTextEdit);
- return d->font;
+ return d->sourceFont;
}
void QDeclarativeTextEdit::setFont(const QFont &font)
{
Q_D(QDeclarativeTextEdit);
+ if (d->sourceFont == font)
+ return;
+
+ d->sourceFont = font;
+ QFont oldFont = d->font;
d->font = font;
+ if (d->font.pointSizeF() != -1) {
+ // 0.5pt resolution
+ qreal size = qRound(d->font.pointSizeF()*2.0);
+ d->font.setPointSizeF(size/2.0);
+ }
- clearCache();
- d->document->setDefaultFont(d->font);
- if(d->cursor){
- d->cursor->setHeight(QFontMetrics(d->font).height());
- moveCursorDelegate();
+ if (oldFont != d->font) {
+ clearCache();
+ d->document->setDefaultFont(d->font);
+ if(d->cursor){
+ d->cursor->setHeight(QFontMetrics(d->font).height());
+ moveCursorDelegate();
+ }
+ updateSize();
+ update();
}
- updateSize();
- update();
+ emit fontChanged(d->sourceFont);
}
/*!