summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dist/changes-4.7.2.md48
-rw-r--r--src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp3
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp5
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.h2
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp1
-rw-r--r--src/plugins/projectexplorer/projectwelcomepage.cpp10
-rw-r--r--src/plugins/projectexplorer/projectwizardpage.cpp5
-rw-r--r--src/plugins/projectexplorer/toolchainmanager.cpp8
-rw-r--r--src/plugins/projectexplorer/toolchainmanager.h2
-rw-r--r--src/plugins/projectexplorer/windebuginterface.cpp2
10 files changed, 81 insertions, 5 deletions
diff --git a/dist/changes-4.7.2.md b/dist/changes-4.7.2.md
new file mode 100644
index 0000000000..262463113f
--- /dev/null
+++ b/dist/changes-4.7.2.md
@@ -0,0 +1,48 @@
+Qt Creator version 4.7.2 contains bug fixes.
+
+The most important changes are listed in this document. For a complete
+list of changes, see the Git log for the Qt Creator sources that
+you can check out from the public Git repository. For example:
+
+ git clone git://code.qt.io/qt-creator/qt-creator.git
+ git log --cherry-pick --pretty=oneline origin/v4.7.1..v4.7.2
+
+Editing
+
+* Fixed that collapsed text no longer showed up in tooltip (QTCREATORBUG-21040)
+* Fixed crash with generic text completion (QTCREATORBUG-21192)
+
+C++ Support
+
+* Fixed wrong value of `__cplusplus` define (QTCREATORBUG-20884)
+* Clang Code Model
+ * Fixed possible crash in `Follow Symbol Under Cursor`
+ * Fixed crash when using `Select Block Up/Down` with lambda
+ (QTCREATORBUG-20994)
+
+Debugging
+
+* CDB
+ * Fixed pretty printing of `std::vector` without Python (QTCREATORBUG-21074)
+
+Platform Specific
+
+Windows
+
+* Fixed saving of files when another application blocks atomic save operation
+ (QTCREATORBUG-7668)
+
+Remote Linux
+
+* Fixed superfluous empty lines in application output (QTCREATORBUG-19367)
+
+Credits for these changes go to:
+David Schulz
+Eike Ziller
+Friedemann Kleint
+Hannes Domani
+Ivan Donchevskii
+Jonathan Liu
+Kai Köhne
+Nikolai Kosjar
+Sergey Belyashov
diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp
index c708dd5af4..894fadcfa4 100644
--- a/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp
+++ b/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp
@@ -31,6 +31,7 @@
#include "../project.h"
#include "../projectexplorer.h"
#include "../projectexplorerconstants.h"
+#include "../projecttree.h"
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/messagemanager.h>
@@ -290,7 +291,7 @@ void JsonWizard::accept()
openFiles(m_files);
auto node = static_cast<ProjectExplorer::Node*>(value(ProjectExplorer::Constants::PREFERRED_PROJECT_NODE).value<void*>());
- if (node) // PREFERRED_PROJECT_NODE is not set for newly created projects
+ if (node && ProjectTree::hasNode(node)) // PREFERRED_PROJECT_NODE is not set for newly created projects
openProjectForNode(node);
}
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index 50c3a9d369..45fa8a5ece 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -1296,6 +1296,11 @@ bool MsvcToolChain::operator ==(const ToolChain &other) const
return m_varsBatArg == msvcTc->m_varsBatArg;
}
+void MsvcToolChain::cancelMsvcToolChainDetection()
+{
+ envModThreadPool()->clear();
+}
+
bool MsvcToolChainFactory::canRestore(const QVariantMap &data)
{
const Core::Id id = typeIdFromMap(data);
diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h
index 88ba1523cd..d26b8c52bf 100644
--- a/src/plugins/projectexplorer/msvctoolchain.h
+++ b/src/plugins/projectexplorer/msvctoolchain.h
@@ -82,6 +82,8 @@ public:
bool operator == (const ToolChain &) const override;
+ static void cancelMsvcToolChainDetection();
+
protected:
explicit MsvcToolChain(Core::Id typeId, const QString &name, const Abi &abi,
const QString &varsBat, const QString &varsBatArg,
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 46506bfc13..bf80158488 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -1710,6 +1710,7 @@ ExtensionSystem::IPlugin::ShutdownFlag ProjectExplorerPlugin::aboutToShutdown()
disconnect(ModeManager::instance(), &ModeManager::currentModeChanged,
dd, &ProjectExplorerPluginPrivate::currentModeChanged);
ProjectTree::aboutToShutDown();
+ ToolChainManager::aboutToShutdown();
SessionManager::closeAllProjects();
dd->m_shuttingDown = true;
diff --git a/src/plugins/projectexplorer/projectwelcomepage.cpp b/src/plugins/projectexplorer/projectwelcomepage.cpp
index 9cf3167a24..08842aabea 100644
--- a/src/plugins/projectexplorer/projectwelcomepage.cpp
+++ b/src/plugins/projectexplorer/projectwelcomepage.cpp
@@ -127,12 +127,18 @@ ProjectWelcomePage::ProjectWelcomePage()
auto act = new QAction(tr("Open Session #%1").arg(i), this);
Command *cmd = ActionManager::registerAction(act, sessionBase.withSuffix(i), welcomeContext);
cmd->setDefaultKeySequence(QKeySequence((useMacShortcuts ? tr("Ctrl+Meta+%1") : tr("Ctrl+Alt+%1")).arg(i)));
- connect(act, &QAction::triggered, this, [this, i] { openSessionAt(i - 1); });
+ connect(act, &QAction::triggered, this, [this, i] {
+ if (i <= m_sessionModel->rowCount())
+ openSessionAt(i - 1);
+ });
act = new QAction(tr("Open Recent Project #%1").arg(i), this);
cmd = ActionManager::registerAction(act, projectBase.withSuffix(i), welcomeContext);
cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+%1").arg(i)));
- connect(act, &QAction::triggered, this, [this, i] { openProjectAt(i - 1); });
+ connect(act, &QAction::triggered, this, [this, i] {
+ if (i <= m_projectModel->rowCount(QModelIndex()))
+ openProjectAt(i - 1);
+ });
}
}
diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp
index ee86abe895..500a13a4fc 100644
--- a/src/plugins/projectexplorer/projectwizardpage.cpp
+++ b/src/plugins/projectexplorer/projectwizardpage.cpp
@@ -456,10 +456,11 @@ void ProjectWizardPage::initializeProjectTree(Node *context, const QStringList &
}
root->prependChild(createNoneNode(&selector));
- // Set combobox to context node:
+ // Set combobox to context node if that appears in the tree:
auto predicate = [context](TreeItem *ti) { return static_cast<AddNewTree*>(ti)->node() == context; };
TreeItem *contextItem = root->findAnyChild(predicate);
- m_ui->projectComboBox->setCurrentIndex(m_model.indexForItem(contextItem));
+ if (contextItem)
+ m_ui->projectComboBox->setCurrentIndex(m_model.indexForItem(contextItem));
setAdditionalInfo(selector.deployingProjects());
setBestNode(selector.bestChoice());
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index 2a5c899570..caa15e6d2f 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -27,6 +27,7 @@
#include "abi.h"
#include "kitinformation.h"
+#include "msvctoolchain.h"
#include "toolchain.h"
#include "toolchainsettingsaccessor.h"
@@ -249,4 +250,11 @@ bool ToolChainManager::isLanguageSupported(const Core::Id &id)
return Utils::contains(d->m_languages, Utils::equal(&LanguageDisplayPair::id, id));
}
+void ToolChainManager::aboutToShutdown()
+{
+#ifdef Q_OS_WIN
+ MsvcToolChain::cancelMsvcToolChainDetection();
+#endif
+}
+
} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/toolchainmanager.h b/src/plugins/projectexplorer/toolchainmanager.h
index 3fdcd98126..2e26431b84 100644
--- a/src/plugins/projectexplorer/toolchainmanager.h
+++ b/src/plugins/projectexplorer/toolchainmanager.h
@@ -74,6 +74,8 @@ public:
static QString displayNameOfLanguageId(const Core::Id &id);
static bool isLanguageSupported(const Core::Id &id);
+ static void aboutToShutdown();
+
void saveToolChains();
signals:
diff --git a/src/plugins/projectexplorer/windebuginterface.cpp b/src/plugins/projectexplorer/windebuginterface.cpp
index ce3950acb9..2f7bbcc4d8 100644
--- a/src/plugins/projectexplorer/windebuginterface.cpp
+++ b/src/plugins/projectexplorer/windebuginterface.cpp
@@ -177,6 +177,8 @@ void WinDebugInterface::dispatchDebugOutput()
m_outputMutex.lock();
for (auto &entry : m_debugOutput) {
std::vector<QString> &src = entry.second;
+ if (src.empty())
+ continue;
QString dst;
size_t n = std::min(maxMessagesToSend, src.size());
for (size_t i = 0; i < n; ++i)