diff options
Diffstat (limited to 'src/corelib/io/qstandardpaths_win.cpp')
-rw-r--r-- | src/corelib/io/qstandardpaths_win.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/corelib/io/qstandardpaths_win.cpp b/src/corelib/io/qstandardpaths_win.cpp index 13b8fe224a..805ce65a5a 100644 --- a/src/corelib/io/qstandardpaths_win.cpp +++ b/src/corelib/io/qstandardpaths_win.cpp @@ -105,8 +105,10 @@ static GUID writableSpecialFolderId(QStandardPaths::StandardLocation type) FOLDERID_LocalAppData, // AppConfigLocation ("Local" path) FOLDERID_Public, // PublicShareLocation FOLDERID_Templates, // TemplatesLocation + GUID(), // StateLocation + GUID(), // GenericStateLocation }; - static_assert(sizeof(folderIds) / sizeof(folderIds[0]) == size_t(QStandardPaths::TemplatesLocation + 1)); + static_assert(sizeof(folderIds) / sizeof(folderIds[0]) == size_t(QStandardPaths::GenericStateLocation + 1)); // folders for low integrity processes static const GUID folderIds_li[] = { @@ -130,6 +132,8 @@ static GUID writableSpecialFolderId(QStandardPaths::StandardLocation type) FOLDERID_LocalAppDataLow,// AppConfigLocation ("Local" path) FOLDERID_Public, // PublicShareLocation FOLDERID_Templates, // TemplatesLocation + GUID(), // StateLocation + GUID(), // GenericStateLocation }; static_assert(sizeof(folderIds_li) == sizeof(folderIds)); @@ -184,6 +188,23 @@ QString QStandardPaths::writableLocation(StandardLocation type) result = QDir::tempPath(); break; + case StateLocation: + result = sHGetKnownFolderPath(writableSpecialFolderId(AppLocalDataLocation)); + if (!result.isEmpty()) { + appendTestMode(result); + appendOrganizationAndApp(result); + result += "/State"_L1; + } + break; + + case GenericStateLocation: + result = sHGetKnownFolderPath(writableSpecialFolderId(GenericDataLocation)); + if (!result.isEmpty()) { + appendTestMode(result); + result += "/State"_L1; + } + break; + default: result = sHGetKnownFolderPath(writableSpecialFolderId(type)); if (!result.isEmpty() && isConfigLocation(type)) { |