summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Schuberth <sschuberth@gmail.com>2013-10-01 18:57:32 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-07 19:09:37 +0200
commitac5f4a8e76fe9c5fbd809d7e3797b702e57ff78c (patch)
treeb930b6ff48e9e210a34b3ce378e90a27f2c897cf
parentcf092abdfc888f19a607a43c9b4bac776b5c1f8e (diff)
Allow to use short names for Windows Registry root keys
Change-Id: I58b7681bb49e93b7577bc559d754c81d3c6f007b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-rw-r--r--src/corelib/io/qsettings_win.cpp12
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp13
2 files changed, 25 insertions, 0 deletions
diff --git a/src/corelib/io/qsettings_win.cpp b/src/corelib/io/qsettings_win.cpp
index 2d086efd4e..69f16f994a 100644
--- a/src/corelib/io/qsettings_win.cpp
+++ b/src/corelib/io/qsettings_win.cpp
@@ -442,15 +442,27 @@ QWinSettingsPrivate::QWinSettingsPrivate(QString rPath)
if (rPath.startsWith(QLatin1String("HKEY_CURRENT_USER"))) {
keyLength = 17;
keyName = HKEY_CURRENT_USER;
+ } else if (rPath.startsWith(QLatin1String("HKCU"))) {
+ keyLength = 4;
+ keyName = HKEY_CURRENT_USER;
} else if (rPath.startsWith(QLatin1String("HKEY_LOCAL_MACHINE"))) {
keyLength = 18;
keyName = HKEY_LOCAL_MACHINE;
+ } else if (rPath.startsWith(QLatin1String("HKLM"))) {
+ keyLength = 4;
+ keyName = HKEY_LOCAL_MACHINE;
} else if (rPath.startsWith(QLatin1String("HKEY_CLASSES_ROOT"))) {
keyLength = 17;
keyName = HKEY_CLASSES_ROOT;
+ } else if (rPath.startsWith(QLatin1String("HKCR"))) {
+ keyLength = 4;
+ keyName = HKEY_CLASSES_ROOT;
} else if (rPath.startsWith(QLatin1String("HKEY_USERS"))) {
keyLength = 10;
keyName = HKEY_USERS;
+ } else if (rPath.startsWith(QLatin1String("HKU"))) {
+ keyLength = 3;
+ keyName = HKEY_USERS;
} else {
return;
}
diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
index 290d4ac240..f0fa860686 100644
--- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
+++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
@@ -106,6 +106,7 @@ private slots:
void testThreadSafety();
void testEmptyData();
void testResourceFiles();
+ void testRegistryShortRootNames();
#ifdef Q_OS_MAC
void fileName();
#endif
@@ -1949,6 +1950,18 @@ void tst_QSettings::testResourceFiles()
QCOMPARE(settings.value("Field 1/Bottom").toInt(), 90);
}
+void tst_QSettings::testRegistryShortRootNames()
+{
+#ifndef Q_OS_WIN
+ QSKIP("This test is specific to the Windows registry only.");
+#else
+ QVERIFY(QSettings("HKEY_CURRENT_USER", QSettings::NativeFormat).childGroups() == QSettings("HKCU", QSettings::NativeFormat).childGroups());
+ QVERIFY(QSettings("HKEY_LOCAL_MACHINE", QSettings::NativeFormat).childGroups() == QSettings("HKLM", QSettings::NativeFormat).childGroups());
+ QVERIFY(QSettings("HKEY_CLASSES_ROOT", QSettings::NativeFormat).childGroups() == QSettings("HKCR", QSettings::NativeFormat).childGroups());
+ QVERIFY(QSettings("HKEY_USERS", QSettings::NativeFormat).childGroups() == QSettings("HKU", QSettings::NativeFormat).childGroups());
+#endif
+}
+
void tst_QSettings::fromFile_data()
{
populateWithFormats();