From 9d4a6092d2632ac672c36f717afaea06c259d4df Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Mon, 9 Mar 2020 15:05:13 +0100 Subject: [PATCH] ADS: Fix Preset sync failure if directory missing Change-Id: I23ed2a12753058b36a708c9aff64291782b73809 Reviewed-by: Thomas Hartmann --- src/libs/advanceddockingsystem/dockmanager.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/libs/advanceddockingsystem/dockmanager.cpp b/src/libs/advanceddockingsystem/dockmanager.cpp index 39b7062c098..6adce0111ad 100644 --- a/src/libs/advanceddockingsystem/dockmanager.cpp +++ b/src/libs/advanceddockingsystem/dockmanager.cpp @@ -909,7 +909,13 @@ namespace ADS // Copy all missing workspace presets over to the local workspace folder QDir presetsDir(d->m_workspacePresetsPath); - QDir workspaceDir(QFileInfo(d->m_settings->fileName()).path() + QLatin1String("/workspaces")); + QDir workspaceDir(QFileInfo(d->m_settings->fileName()).path() + QLatin1Char('/') + m_dirName); + // Try do create the 'workspaces' directory if it doesn't exist already + workspaceDir.mkpath(workspaceDir.absolutePath()); + if (!workspaceDir.exists()) { + qCInfo(adsLog) << QString("Could not make directory '%1')").arg(workspaceDir.absolutePath()); + return; + } for (const auto &preset : presets) { QString filename = preset; @@ -920,7 +926,10 @@ namespace ADS QFile file(filePath); if (file.exists()) { - file.copy(workspaceDir.filePath(filename)); + if (!file.copy(workspaceDir.filePath(filename))) { + qCInfo(adsLog) << QString("Could not copy '%1' to '%2' error: %3").arg( + filePath, workspaceDir.filePath(filename), file.errorString()); + } d->m_workspaceListDirty = true; } }