summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2012-10-11 19:47:58 +0300
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-16 02:47:49 +0200
commit34823524aed422b13662b9fcb12767b0a7a256de (patch)
treebea34c01b52feeb95a5025e56ff14510e19c3515 /src
parentc967c9ec7fee7270496bb2ee7c945e0b1f62f2f8 (diff)
QFont: Don't detach unless value has really changed
Change-Id: I496b0102853d04652322bf8751e5824aaa0725b7 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/text/qfont.cpp52
1 files changed, 46 insertions, 6 deletions
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index 24423ee4af..995d48d450 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -760,6 +760,9 @@ QString QFont::family() const
*/
void QFont::setFamily(const QString &family)
{
+ if ((resolve_mask & QFont::FamilyResolved) && d->request.family == family)
+ return;
+
detach();
d->request.family = family;
@@ -793,6 +796,9 @@ QString QFont::styleName() const
*/
void QFont::setStyleName(const QString &styleName)
{
+ if ((resolve_mask & QFont::StyleNameResolved) && d->request.styleName == styleName)
+ return;
+
detach();
d->request.styleName = styleName;
@@ -892,6 +898,9 @@ int QFont::pointSize() const
*/
void QFont::setHintingPreference(HintingPreference hintingPreference)
{
+ if ((resolve_mask & QFont::HintingPreferenceResolved) && d->request.hintingPreference == hintingPreference)
+ return;
+
detach();
d->request.hintingPreference = hintingPreference;
@@ -922,6 +931,9 @@ void QFont::setPointSize(int pointSize)
return;
}
+ if ((resolve_mask & QFont::SizeResolved) && d->request.pointSize == qreal(pointSize))
+ return;
+
detach();
d->request.pointSize = qreal(pointSize);
@@ -944,6 +956,9 @@ void QFont::setPointSizeF(qreal pointSize)
return;
}
+ if ((resolve_mask & QFont::SizeResolved) && d->request.pointSize == pointSize)
+ return;
+
detach();
d->request.pointSize = pointSize;
@@ -979,6 +994,9 @@ void QFont::setPixelSize(int pixelSize)
return;
}
+ if ((resolve_mask & QFont::SizeResolved) && d->request.pixelSize == qreal(pixelSize))
+ return;
+
detach();
d->request.pixelSize = pixelSize;
@@ -1034,6 +1052,9 @@ QFont::Style QFont::style() const
*/
void QFont::setStyle(Style style)
{
+ if ((resolve_mask & QFont::StyleResolved) && d->request.style == style)
+ return;
+
detach();
d->request.style = style;
@@ -1077,6 +1098,9 @@ void QFont::setWeight(int weight)
{
Q_ASSERT_X(weight >= 0 && weight <= 99, "QFont::setWeight", "Weight must be between 0 and 99");
+ if ((resolve_mask & QFont::WeightResolved) && d->request.weight == weight)
+ return;
+
detach();
d->request.weight = weight;
@@ -1122,6 +1146,9 @@ bool QFont::underline() const
*/
void QFont::setUnderline(bool enable)
{
+ if ((resolve_mask & QFont::UnderlineResolved) && d->underline == enable)
+ return;
+
detach();
d->underline = enable;
@@ -1145,6 +1172,9 @@ bool QFont::overline() const
*/
void QFont::setOverline(bool enable)
{
+ if ((resolve_mask & QFont::OverlineResolved) && d->overline == enable)
+ return;
+
detach();
d->overline = enable;
@@ -1169,6 +1199,9 @@ bool QFont::strikeOut() const
*/
void QFont::setStrikeOut(bool enable)
{
+ if ((resolve_mask & QFont::StrikeOutResolved) && d->strikeOut == enable)
+ return;
+
detach();
d->strikeOut = enable;
@@ -1193,6 +1226,9 @@ bool QFont::fixedPitch() const
*/
void QFont::setFixedPitch(bool enable)
{
+ if ((resolve_mask & QFont::FixedPitchResolved) && d->request.fixedPitch == enable)
+ return;
+
detach();
d->request.fixedPitch = enable;
@@ -1223,7 +1259,11 @@ bool QFont::kerning() const
*/
void QFont::setKerning(bool enable)
{
+ if ((resolve_mask & QFont::KerningResolved) && d->kerning == enable)
+ return;
+
detach();
+
d->kerning = enable;
resolve_mask |= QFont::KerningResolved;
}
@@ -1339,13 +1379,13 @@ QFont::StyleHint QFont::styleHint() const
*/
void QFont::setStyleHint(StyleHint hint, StyleStrategy strategy)
{
- detach();
-
if ((resolve_mask & (QFont::StyleHintResolved | QFont::StyleStrategyResolved)) &&
(StyleHint) d->request.styleHint == hint &&
(StyleStrategy) d->request.styleStrategy == strategy)
return;
+ detach();
+
d->request.styleHint = hint;
d->request.styleStrategy = strategy;
resolve_mask |= QFont::StyleHintResolved;
@@ -1360,12 +1400,12 @@ void QFont::setStyleHint(StyleHint hint, StyleStrategy strategy)
*/
void QFont::setStyleStrategy(StyleStrategy s)
{
- detach();
-
if ((resolve_mask & QFont::StyleStrategyResolved) &&
s == (StyleStrategy)d->request.styleStrategy)
return;
+ detach();
+
d->request.styleStrategy = s;
resolve_mask |= QFont::StyleStrategyResolved;
}
@@ -1593,10 +1633,10 @@ QFont::Capitalization QFont::capitalization() const
*/
void QFont::setRawMode(bool enable)
{
- detach();
-
if ((bool) d->rawMode == enable) return;
+ detach();
+
d->rawMode = enable;
}