diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/qmljs/qmljslink.cpp | 9 | ||||
-rw-r--r-- | src/plugins/android/androidmanifesteditorwidget.cpp | 16 | ||||
-rw-r--r-- | src/plugins/android/androidmanifesteditorwidget.h | 2 | ||||
-rw-r--r-- | src/plugins/android/androidtoolchain.cpp | 6 | ||||
-rw-r--r-- | src/plugins/clangcodemodel/clangfollowsymbol.cpp | 13 | ||||
-rw-r--r-- | src/plugins/coreplugin/systemsettings.ui | 9 | ||||
-rw-r--r-- | src/plugins/cpptools/compileroptionsbuilder.cpp | 41 | ||||
-rw-r--r-- | src/plugins/cpptools/compileroptionsbuilder.h | 2 | ||||
-rw-r--r-- | src/plugins/debugger/cdb/cdbengine.cpp | 2 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/debugger/debuggertooltipmanager.cpp | 1 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorersettingspage.cpp | 1 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp | 4 | ||||
-rw-r--r-- | src/plugins/qtsupport/qtoutputformatter.cpp | 45 | ||||
-rw-r--r-- | src/tools/clangbackend/clangbackendmain.cpp | 5 |
16 files changed, 113 insertions, 49 deletions
diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 9c7855c5fdb..737ec6cc46d 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -393,13 +393,8 @@ Import LinkPrivate::importNonFile(Document::Ptr doc, const ImportInfo &importInf } // TODO: at the moment there is not any types information on Qbs imports. - // Just check that tha the import is listed in the Qbs bundle. - if (doc->language() == Dialect::QmlQbs) { - QmlBundle qbs = ModelManagerInterface::instance() - ->activeBundles().bundleForLanguage(Dialect::QmlQbs); - if (qbs.supportedImports().contains(importInfo.name())) - importFound = true; - } + if (doc->language() == Dialect::QmlQbs) + importFound = true; if (!importFound && importInfo.ast()) { import.valid = false; diff --git a/src/plugins/android/androidmanifesteditorwidget.cpp b/src/plugins/android/androidmanifesteditorwidget.cpp index bcaa0490e30..e040c0db87d 100644 --- a/src/plugins/android/androidmanifesteditorwidget.cpp +++ b/src/plugins/android/androidmanifesteditorwidget.cpp @@ -170,12 +170,8 @@ void AndroidManifestEditorWidget::initializePage() formLayout->addRow(QString(), warningRow); - - m_versionCode = new QSpinBox(packageGroupBox); - m_versionCode->setMaximum(std::numeric_limits<int>::max()); - m_versionCode->setValue(1); - m_versionCode->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - formLayout->addRow(tr("Version code:"), m_versionCode); + m_versionCodeLineEdit = new QLineEdit(packageGroupBox); + formLayout->addRow(tr("Version code:"), m_versionCodeLineEdit); m_versionNameLinedit = new QLineEdit(packageGroupBox); formLayout->addRow(tr("Version name:"), m_versionNameLinedit); @@ -201,8 +197,8 @@ void AndroidManifestEditorWidget::initializePage() connect(m_packageNameLineEdit, &QLineEdit::textEdited, this, &AndroidManifestEditorWidget::setPackageName); - connect(m_versionCode, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), - this, &AndroidManifestEditorWidget::setDirty); + connect(m_versionCodeLineEdit, &QLineEdit::textEdited, + this, setDirtyFunc); connect(m_versionNameLinedit, &QLineEdit::textEdited, this, setDirtyFunc); connect(m_androidMinSdkVersion, @@ -765,7 +761,7 @@ void AndroidManifestEditorWidget::syncToWidgets(const QDomDocument &doc) m_stayClean = true; QDomElement manifest = doc.documentElement(); m_packageNameLineEdit->setText(manifest.attribute(QLatin1String("package"))); - m_versionCode->setValue(manifest.attribute(QLatin1String("android:versionCode")).toInt()); + m_versionCodeLineEdit->setText(manifest.attribute(QLatin1String("android:versionCode"))); m_versionNameLinedit->setText(manifest.attribute(QLatin1String("android:versionName"))); QDomElement usesSdkElement = manifest.firstChildElement(QLatin1String("uses-sdk")); @@ -922,7 +918,7 @@ void AndroidManifestEditorWidget::parseManifest(QXmlStreamReader &reader, QXmlSt << QLatin1String("android:versionName"); QStringList values = QStringList() << m_packageNameLineEdit->text() - << QString::number(m_versionCode->value()) + << m_versionCodeLineEdit->text() << m_versionNameLinedit->text(); QXmlStreamAttributes result = modifyXmlStreamAttributes(attributes, keys, values); diff --git a/src/plugins/android/androidmanifesteditorwidget.h b/src/plugins/android/androidmanifesteditorwidget.h index a9d21e44a34..49d1ec11558 100644 --- a/src/plugins/android/androidmanifesteditorwidget.h +++ b/src/plugins/android/androidmanifesteditorwidget.h @@ -163,7 +163,7 @@ private: QLineEdit *m_packageNameLineEdit; QLabel *m_packageNameWarningIcon; QLabel *m_packageNameWarning; - QSpinBox *m_versionCode; + QLineEdit *m_versionCodeLineEdit; QLineEdit *m_versionNameLinedit; QComboBox *m_androidMinSdkVersion; QComboBox *m_androidTargetSdkVersion; diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index dd8d4ccfb29..1a7315309db 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -139,7 +139,11 @@ QString AndroidToolChain::makeCommand(const Environment &env) const GccToolChain::DetectedAbisResult AndroidToolChain::detectSupportedAbis() const { - return GccToolChain::DetectedAbisResult({targetAbi()}, originalTargetTriple()); + for (auto itr = ClangTargets.constBegin();itr != ClangTargets.constEnd(); ++itr) { + if (itr.value() == targetAbi()) + return GccToolChain::DetectedAbisResult({targetAbi()}, itr.key()); + } + return GccToolChain::DetectedAbisResult({targetAbi()}, ""); } diff --git a/src/plugins/clangcodemodel/clangfollowsymbol.cpp b/src/plugins/clangcodemodel/clangfollowsymbol.cpp index c430c810c30..e5c66f6c6b1 100644 --- a/src/plugins/clangcodemodel/clangfollowsymbol.cpp +++ b/src/plugins/clangcodemodel/clangfollowsymbol.cpp @@ -26,6 +26,7 @@ #include "clangeditordocumentprocessor.h" #include "clangfollowsymbol.h" +#include <coreplugin/editormanager/editormanager.h> #include <cpptools/cppmodelmanager.h> #include <texteditor/texteditor.h> @@ -155,6 +156,12 @@ static ::Utils::ProcessLinkCallback extendedCallback(::Utils::ProcessLinkCallbac }; } +static bool isSameInvocationContext(const Utils::FileName &filePath) +{ + return TextEditor::BaseTextEditor::currentTextEditor()->editorWidget()->isVisible() + && Core::EditorManager::currentDocument()->filePath() == filePath; +} + void ClangFollowSymbol::findLink(const CppTools::CursorInEditor &data, ::Utils::ProcessLinkCallback &&processLinkCallback, bool resolveTarget, @@ -194,9 +201,9 @@ void ClangFollowSymbol::findLink(const CppTools::CursorInEditor &data, m_watcher.reset(new FutureSymbolWatcher()); - QObject::connect(m_watcher.get(), &FutureSymbolWatcher::finished, - [=, callback=std::move(processLinkCallback)]() mutable { - if (m_watcher->isCanceled()) + QObject::connect(m_watcher.get(), &FutureSymbolWatcher::finished, [=, filePath=data.filePath(), + callback=std::move(processLinkCallback)]() mutable { + if (m_watcher->isCanceled() || !isSameInvocationContext(filePath)) return callback(Utils::Link()); CppTools::SymbolInfo result = m_watcher->result(); // We did not fail but the result is empty diff --git a/src/plugins/coreplugin/systemsettings.ui b/src/plugins/coreplugin/systemsettings.ui index 80be38ca39f..172e773657a 100644 --- a/src/plugins/coreplugin/systemsettings.ui +++ b/src/plugins/coreplugin/systemsettings.ui @@ -340,14 +340,19 @@ <verstretch>0</verstretch> </sizepolicy> </property> + <property name="minimumSize"> + <size> + <width>100</width> + <height>0</height> + </size> + </property> <property name="editable"> <bool>true</bool> </property> </widget> </item> <item> - <widget class="QLineEdit" name="terminalOpenArgs"> - </widget> + <widget class="QLineEdit" name="terminalOpenArgs"/> </item> <item> <widget class="QLineEdit" name="terminalExecuteArgs"> diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index 61f8242537b..fae2e29fb58 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -404,16 +404,20 @@ static QByteArray msCompatibilityVersionFromDefines(const ProjectExplorer::Macro return QByteArray(); } +QByteArray CompilerOptionsBuilder::msvcVersion() const +{ + const QByteArray version = msCompatibilityVersionFromDefines(m_projectPart.toolChainMacros); + return !version.isEmpty() ? version + : msCompatibilityVersionFromDefines(m_projectPart.projectMacros); +} + void CompilerOptionsBuilder::addMsvcCompatibilityVersion() { if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID || m_projectPart.toolchainType == ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID) { - const ProjectExplorer::Macros macros = m_projectPart.toolChainMacros - + m_projectPart.projectMacros; - const QByteArray msvcVersion = msCompatibilityVersionFromDefines(macros); - - if (!msvcVersion.isEmpty()) - add(QLatin1String("-fms-compatibility-version=") + msvcVersion); + const QByteArray msvcVer = msvcVersion(); + if (!msvcVer.isEmpty()) + add(QLatin1String("-fms-compatibility-version=") + msvcVer); } } @@ -599,16 +603,21 @@ void CompilerOptionsBuilder::addProjectConfigFileInclude() void CompilerOptionsBuilder::undefineClangVersionMacrosForMsvc() { if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) { - static const QStringList macroNames { - "__clang__", - "__clang_major__", - "__clang_minor__", - "__clang_patchlevel__", - "__clang_version__" - }; - - for (const QString ¯oName : macroNames) - add(undefineOption + macroName); + const QByteArray msvcVer = msvcVersion(); + if (msvcVer.toFloat() < 14.f) { + // Original fix was only for msvc 2013 (version 12.0) + // Undefying them for newer versions is not necessary and breaks boost. + static const QStringList macroNames { + "__clang__", + "__clang_major__", + "__clang_minor__", + "__clang_patchlevel__", + "__clang_version__" + }; + + for (const QString ¯oName : macroNames) + add(undefineOption + macroName); + } } } diff --git a/src/plugins/cpptools/compileroptionsbuilder.h b/src/plugins/cpptools/compileroptionsbuilder.h index 06e549d6137..6af5062196b 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.h +++ b/src/plugins/cpptools/compileroptionsbuilder.h @@ -96,6 +96,8 @@ private: const QString m_clangVersion; const QString m_clangResourceDirectory; + QByteArray msvcVersion() const; + QStringList m_options; }; diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 6bc3959630b..ebaf1a65b70 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -764,9 +764,9 @@ bool CdbEngine::hasCapability(unsigned cap) const void CdbEngine::executeStepIn(bool byInstruction) { + adjustOperateByInstruction(byInstruction); if (!m_lastOperateByInstruction) m_sourceStepInto = true; // See explanation at handleStackTrace(). - adjustOperateByInstruction(byInstruction); runCommand({"t", NoFlags}); // Step into-> t (trace) STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyInferiorRunRequested") notifyInferiorRunRequested(); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 042a7f4368f..12e609bc2fd 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1365,7 +1365,7 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, font.setPointSizeF(size); m_breakpointManagerWindow->setFont(font); m_globalLogWindow->setFont(font); -// m_snapshotWindow->setFont(font); + m_engineManagerWindow->setFont(font); }); diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index e858bb49d2f..aefa93e6889 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -1185,7 +1185,6 @@ void DebuggerToolTipManagerPrivate::slotTooltipOverrideRequested { QTC_ASSERT(handled, return); QTC_ASSERT(editorWidget, return); - *handled = false; if (!boolSetting(UseToolTipsInMainEditor)) return; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 0caa97f68c1..47708b89088 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1289,6 +1289,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er s->value(QLatin1String("ProjectExplorer/Settings/AddLibraryPathsToRunEnv"), true).toBool(); dd->m_projectExplorerSettings.prompToStopRunControl = s->value(QLatin1String("ProjectExplorer/Settings/PromptToStopRunControl"), false).toBool(); + dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations = + s->value(QLatin1String("ProjectExplorer/Settings/AutomaticallyCreateRunConfigurations"), true).toBool(); dd->m_projectExplorerSettings.maxAppOutputChars = s->value(QLatin1String("ProjectExplorer/Settings/MaxAppOutputLines"), Core::Constants::DEFAULT_MAX_CHAR_COUNT).toInt() * 100; @@ -1859,6 +1861,8 @@ void ProjectExplorerPluginPrivate::savePersistentSettings() s->setValue(QLatin1String("ProjectExplorer/Settings/AutoRestoreLastSession"), dd->m_projectExplorerSettings.autorestoreLastSession); s->setValue(QLatin1String("ProjectExplorer/Settings/AddLibraryPathsToRunEnv"), dd->m_projectExplorerSettings.addLibraryPathsToRunEnv); s->setValue(QLatin1String("ProjectExplorer/Settings/PromptToStopRunControl"), dd->m_projectExplorerSettings.prompToStopRunControl); + s->setValue(QLatin1String("ProjectExplorer/Settings/AutomaticallyCreateRunConfigurations"), + dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations); s->setValue(QLatin1String("ProjectExplorer/Settings/MaxAppOutputLines"), dd->m_projectExplorerSettings.maxAppOutputChars / 100); s->setValue(QLatin1String("ProjectExplorer/Settings/MaxBuildOutputLines"), dd->m_projectExplorerSettings.maxBuildOutputChars / 100); s->setValue(QLatin1String("ProjectExplorer/Settings/EnvironmentId"), dd->m_projectExplorerSettings.environmentId.toByteArray()); diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp index 5b4b6dbb53a..d7e506021c0 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp +++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp @@ -109,6 +109,7 @@ ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const m_settings.wrapAppOutput = m_ui.wrapAppOutputCheckBox->isChecked(); m_settings.useJom = m_ui.jomCheckbox->isChecked(); m_settings.addLibraryPathsToRunEnv = m_ui.addLibraryPathsToRunEnvCheckBox->isChecked(); + m_settings.prompToStopRunControl = m_ui.promptToStopRunControlCheckBox->isChecked(); m_settings.automaticallyCreateRunConfigurations = m_ui.automaticallyCreateRunConfiguration->isChecked(); m_settings.maxAppOutputChars = m_ui.maxAppOutputBox->value(); m_settings.maxBuildOutputChars = m_ui.maxBuildOutputBox->value(); diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index 38be04f5dc8..f91ed9a733e 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -600,7 +600,9 @@ bool NavigatorTreeModel::setData(const QModelIndex &index, const QVariant &value void NavigatorTreeModel::notifyDataChanged(const ModelNode &modelNode) { const QModelIndex index = indexForModelNode(modelNode); - dataChanged(index, index); + const QAbstractItemModel *model = index.model(); + const QModelIndex sibling = model ? model->sibling(index.row(), 2, index) : QModelIndex(); + dataChanged(index, sibling); } static QList<ModelNode> collectParents(const QList<ModelNode> &modelNodes) diff --git a/src/plugins/qtsupport/qtoutputformatter.cpp b/src/plugins/qtsupport/qtoutputformatter.cpp index 04cd7ba09fd..17487c94289 100644 --- a/src/plugins/qtsupport/qtoutputformatter.cpp +++ b/src/plugins/qtsupport/qtoutputformatter.cpp @@ -61,9 +61,11 @@ public: , qtError(QLatin1String("Object::.*in (.*:\\d+)")) , qtAssert(QLatin1String("ASSERT: .* in file (.+, line \\d+)")) , qtAssertX(QLatin1String("ASSERT failure in .*: \".*\", file (.+, line \\d+)")) - , qtTestFail(QLatin1String("^ Loc: \\[(.*)\\]")) + , qtTestFailUnix(QLatin1String("^ Loc: \\[(.*)\\]")) + , qtTestFailWin(QLatin1String("^(.*\\(\\d+\\)) : failure location\\s*$")) , project(proj) { + qmlError.setMinimal(true); } ~QtOutputFormatterPrivate() @@ -74,7 +76,8 @@ public: QRegExp qtError; QRegExp qtAssert; QRegExp qtAssertX; - QRegExp qtTestFail; + QRegExp qtTestFailUnix; + QRegExp qtTestFailWin; QPointer<Project> project; QString lastLine; FileInProjectFinder projectFinder; @@ -122,9 +125,13 @@ LinkResult QtOutputFormatter::matchLine(const QString &line) const lr.href = d->qtAssertX.cap(1); lr.start = d->qtAssertX.pos(1); lr.end = lr.start + lr.href.length(); - } else if (d->qtTestFail.indexIn(line) != -1) { - lr.href = d->qtTestFail.cap(1); - lr.start = d->qtTestFail.pos(1); + } else if (d->qtTestFailUnix.indexIn(line) != -1) { + lr.href = d->qtTestFailUnix.cap(1); + lr.start = d->qtTestFailUnix.pos(1); + lr.end = lr.start + lr.href.length(); + } else if (d->qtTestFailWin.indexIn(line) != -1) { + lr.href = d->qtTestFailWin.cap(1); + lr.start = d->qtTestFailWin.pos(1); lr.end = lr.start + lr.href.length(); } return lr; @@ -360,6 +367,34 @@ void QtSupportPlugin::testQtOutputFormatter_data() << QString::fromLatin1("file:///main.qml:20 Unexpected token `identifier'") << 0 << 19 << QString::fromLatin1("file:///main.qml:20") << QString::fromLatin1("/main.qml") << 20 << -1; + + QTest::newRow("Unix file link with timestamp") + << QString::fromLatin1("file:///home/user/main.cpp:157 2018-03-21 10:54:45.706") + << 0 << 30 << QString::fromLatin1("file:///home/user/main.cpp:157") + << QString::fromLatin1("/home/user/main.cpp") << 157 << -1; + + QTest::newRow("Windows file link with timestamp") + << QString::fromLatin1("file:///e:/path/main.cpp:157 2018-03-21 10:54:45.706") + << 0 << 28 << QString::fromLatin1("file:///e:/path/main.cpp:157") + << (Utils::HostOsInfo::isWindowsHost() + ? QString::fromLatin1("e:/path/main.cpp") + : QString::fromLatin1("/e:/path/main.cpp")) + << 157 << -1; + + QTest::newRow("Unix failed QTest link") + << QString::fromLatin1(" Loc: [../TestProject/test.cpp(123)]") + << 9 << 37 << QString::fromLatin1("../TestProject/test.cpp(123)") + << QString::fromLatin1("../TestProject/test.cpp") << 123 << -1; + + QTest::newRow("Windows failed QTest link") + << QString::fromLatin1("..\\TestProject\\test.cpp(123) : failure location") + << 0 << 28 << QString::fromLatin1("..\\TestProject\\test.cpp(123)") + << QString::fromLatin1("..\\TestProject\\test.cpp") << 123 << -1; + + QTest::newRow("Windows failed QTest link with carriage return") + << QString::fromLatin1("..\\TestProject\\test.cpp(123) : failure location\r") + << 0 << 28 << QString::fromLatin1("..\\TestProject\\test.cpp(123)") + << QString::fromLatin1("..\\TestProject\\test.cpp") << 123 << -1; } void QtSupportPlugin::testQtOutputFormatter() diff --git a/src/tools/clangbackend/clangbackendmain.cpp b/src/tools/clangbackend/clangbackendmain.cpp index efe5970a4d8..5cbac3ce601 100644 --- a/src/tools/clangbackend/clangbackendmain.cpp +++ b/src/tools/clangbackend/clangbackendmain.cpp @@ -34,6 +34,7 @@ #include <clangcodemodelclientproxy.h> #include <iostream> +#include <clocale> using ClangBackEnd::ClangCodeModelClientProxy; using ClangBackEnd::ClangCodeModelServer; @@ -75,6 +76,10 @@ int main(int argc, char *argv[]) QCoreApplication::setApplicationVersion(QStringLiteral("1.0.0")); QCoreApplication application(argc, argv); + + // Some tidy checks use locale-dependent conversion functions and thus might throw exceptions. + std::setlocale(LC_NUMERIC, "C"); + CrashHandlerSetup setupCrashHandler(QCoreApplication::applicationName(), CrashHandlerSetup::DisableRestart); |