OSDN Git Service

make QLocale::matchingLocales() behave as documented
authorIvailo Monev <xakepa10@laimg.moc>
Wed, 7 Aug 2019 19:25:26 +0000 (19:25 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Wed, 7 Aug 2019 19:25:26 +0000 (19:25 +0000)
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
src/core/tools/qlocale.cpp

index c606528..bb0af8b 100644 (file)
@@ -1688,15 +1688,21 @@ QList<QLocale> QLocale::matchingLocales(QLocale::Language language,
         return QList<QLocale>();
 
     QList<QLocale> result;
-    if (language == QLocale::AnyLanguage && script == QLocale::AnyScript && country == QLocale::AnyCountry)
+    if (language == QLocale::AnyLanguage && script == QLocale::AnyScript && country == QLocale::AnyCountry) {
         result.reserve(localeTblSize);
-    for (qint16 i = 0; i < localeTblSize; i++) {
-        if (localeTbl[i].m_language == language
-            && localeTbl[i].m_script == script
-            && localeTbl[i].m_country == country) {
-            QLocale locale(language, script, country);
+        for (qint16 i = 0; i < localeTblSize; i++) {
+            QLocale locale(localeTbl[i].m_language, localeTbl[i].m_script, localeTbl[i].m_country);
             result.append(locale);
         }
+    } else {
+        for (qint16 i = 0; i < localeTblSize; i++) {
+            if (localeTbl[i].m_language == language
+                && localeTbl[i].m_script == script
+                && localeTbl[i].m_country == country) {
+                QLocale locale(language, script, country);
+                result.append(locale);
+            }
+        }
     }
     return result;
 }