diff options
author | Edward Welbourne <edward.welbourne@qt.io> | 2018-10-02 19:02:29 +0200 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2018-12-11 19:05:07 +0000 |
commit | ab448f731ecd8437c7c5c8b96a0e7f419ec3a7ca (patch) | |
tree | fd92aef03d376177364253beddd3e74ce7ad2715 /src/corelib/tools/qcollator_p.h | |
parent | 63b0eb3a89049f3a9166a29e8c8275d77323ec52 (diff) |
Handle QCollator with locale C by delegating to QString
Previously, the C locale was treated as English because each back-end
takes the locale's bcp47Name(), which maps C to en. However, the C
locale has its own rules; which QString helpfully implements; so we
can delegate to it in this case. Extended this to sort keys, where
possible. Clean up existing implementations in the process.
Extended tst_QCollator::compare() with some cases to check this. That
required wrapping the test's calls to collator.compare() in a sign
canonicalizer, since it can return any -ve for < or +ve for >, not
just -1 and +1 for these cases (and it'd be rash to hard-code specific
negative and positive values, as they may vary between backends).
[ChangeLog][QtCore][QCollator] Added support for collation in the C
locale, albeit this is only well-defined for ASCII. Collation sort
keys remain unsupported on Darwin.
Fixes: QTBUG-58621
Change-Id: I327010d90f09bd1b1816f5590cb124e3d423e61d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools/qcollator_p.h')
-rw-r--r-- | src/corelib/tools/qcollator_p.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/corelib/tools/qcollator_p.h b/src/corelib/tools/qcollator_p.h index e89c08447c..361c3fb987 100644 --- a/src/corelib/tools/qcollator_p.h +++ b/src/corelib/tools/qcollator_p.h @@ -110,6 +110,7 @@ public: QCollatorPrivate(const QLocale &locale) : locale(locale) {} ~QCollatorPrivate() { cleanup(); } + bool isC() { return locale.language() == QLocale::C; } void clear() { cleanup(); |