summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qcollator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/tools/qcollator.cpp')
-rw-r--r--src/corelib/tools/qcollator.cpp15
1 files changed, 4 insertions, 11 deletions
diff --git a/src/corelib/tools/qcollator.cpp b/src/corelib/tools/qcollator.cpp
index 5155badcf8..1cf223aae6 100644
--- a/src/corelib/tools/qcollator.cpp
+++ b/src/corelib/tools/qcollator.cpp
@@ -77,9 +77,8 @@ QT_BEGIN_NAMESPACE
\sa setLocale()
*/
QCollator::QCollator(const QLocale &locale)
- : d(new QCollatorPrivate)
+ : d(new QCollatorPrivate(locale))
{
- d->locale = locale;
d->init();
}
@@ -158,15 +157,13 @@ QCollator &QCollator::operator=(const QCollator &other)
void QCollator::detach()
{
if (d->ref.load() != 1) {
- QCollatorPrivate *x = new QCollatorPrivate;
- x->ref.store(1);
- x->locale = d->locale;
- x->collator = 0;
+ QCollatorPrivate *x = new QCollatorPrivate(d->locale);
if (!d->ref.deref())
delete d;
d = x;
- d->init();
}
+ // All callers need this, because about to modify the object:
+ d->dirty = true;
}
/*!
@@ -179,7 +176,6 @@ void QCollator::setLocale(const QLocale &locale)
detach();
d->locale = locale;
- d->dirty = true;
}
/*!
@@ -204,7 +200,6 @@ void QCollator::setCaseSensitivity(Qt::CaseSensitivity cs)
detach();
d->caseSensitivity = cs;
- d->dirty = true;
}
/*!
@@ -242,7 +237,6 @@ void QCollator::setNumericMode(bool on)
detach();
d->numericMode = on;
- d->dirty = true;
}
/*!
@@ -275,7 +269,6 @@ void QCollator::setIgnorePunctuation(bool on)
detach();
d->ignorePunctuation = on;
- d->dirty = true;
}
/*!