From 6003fe9b361a5a2aaa16067b510930bf78d93ed7 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Thu, 7 Jul 2022 08:25:03 +0200 Subject: [PATCH] docker: Fix StringAspect default value handling The StringAspect needs to return a possible default value if no value was set by the user. Otherwise it would write an empty string when ::apply was called. Also a small improvement for docker error logging is added Change-Id: I85f80253894d2c3e726da714616e5275039febcc Reviewed-by: Christian Stenger Reviewed-by: hjk --- src/libs/utils/aspects.cpp | 6 ++++++ src/plugins/docker/dockerdevice.cpp | 8 ++++++-- src/plugins/docker/dockersettings.cpp | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 61fc341f832..3739a00e9e1 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -1196,12 +1196,18 @@ QVariant StringAspect::volatileValue() const switch (d->m_displayStyle) { case PathChooserDisplay: QTC_ASSERT(d->m_pathChooserDisplay, return {}); + if (d->m_pathChooserDisplay->filePath().isEmpty()) + return defaultValue().toString(); return d->m_pathChooserDisplay->filePath().toString(); case LineEditDisplay: QTC_ASSERT(d->m_lineEditDisplay, return {}); + if (d->m_lineEditDisplay->text().isEmpty()) + return defaultValue().toString(); return d->m_lineEditDisplay->text(); case TextEditDisplay: QTC_ASSERT(d->m_textEditDisplay, return {}); + if (d->m_textEditDisplay->document()->isEmpty()) + return defaultValue().toString(); return d->m_textEditDisplay->document()->toPlainText(); case LabelDisplay: break; diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index ee47708e392..fe96c54e7c7 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -451,8 +451,12 @@ void DockerDevicePrivate::startContainer() createProcess.setCommand(dockerCreate); createProcess.runBlocking(); - if (createProcess.result() != ProcessResult::FinishedWithSuccess) + if (createProcess.result() != ProcessResult::FinishedWithSuccess) { + qCWarning(dockerDeviceLog) << "Failed creating docker container:"; + qCWarning(dockerDeviceLog) << "Exit Code:" << createProcess.exitCode(); + qCWarning(dockerDeviceLog) << createProcess.allOutput(); return; + } m_container = createProcess.cleanedStdOut().trimmed(); if (m_container.isEmpty()) @@ -1094,7 +1098,7 @@ public: m_view->setSelectionMode(QAbstractItemView::SingleSelection); m_log = new QTextBrowser; - m_log->setVisible(false); + m_log->setVisible(dockerDeviceLog().isDebugEnabled()); const QString fail = QString{"Docker: "} + QCoreApplication::translate("Debugger::Internal::GdbEngine", diff --git a/src/plugins/docker/dockersettings.cpp b/src/plugins/docker/dockersettings.cpp index 3cab53e3e76..06e1397e5b6 100644 --- a/src/plugins/docker/dockersettings.cpp +++ b/src/plugins/docker/dockersettings.cpp @@ -47,7 +47,7 @@ DockerSettings::DockerSettings() registerAspect(&dockerBinaryPath); dockerBinaryPath.setDisplayStyle(StringAspect::PathChooserDisplay); dockerBinaryPath.setExpectedKind(PathChooser::ExistingCommand); - dockerBinaryPath.setDefaultValue(FilePath::fromString("docker").searchInPath({"/usr/local/bin"}).toString()); + dockerBinaryPath.setDefaultFilePath(FilePath::fromString("docker").searchInPath({"/usr/local/bin"})); dockerBinaryPath.setDisplayName(tr("Docker CLI")); dockerBinaryPath.setHistoryCompleter("Docker.Command.History"); dockerBinaryPath.setLabelText(tr("Command:"));