diff options
-rw-r--r-- | dist/changes-4.7.2.md | 48 | ||||
-rw-r--r-- | src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp | 3 | ||||
-rw-r--r-- | src/plugins/projectexplorer/msvctoolchain.cpp | 5 | ||||
-rw-r--r-- | src/plugins/projectexplorer/msvctoolchain.h | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 1 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectwelcomepage.cpp | 10 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectwizardpage.cpp | 5 | ||||
-rw-r--r-- | src/plugins/projectexplorer/toolchainmanager.cpp | 8 | ||||
-rw-r--r-- | src/plugins/projectexplorer/toolchainmanager.h | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/windebuginterface.cpp | 2 |
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) |