diff --git a/src/plugins/help/webenginehelpviewer.cpp b/src/plugins/help/webenginehelpviewer.cpp index 9ff0b1965ab..18c4d865d41 100644 --- a/src/plugins/help/webenginehelpviewer.cpp +++ b/src/plugins/help/webenginehelpviewer.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) #include @@ -89,7 +90,20 @@ WebEngineHelpViewer::WebEngineHelpViewer(QWidget *parent) : setPalette(p); connect(m_widget, &QWebEngineView::urlChanged, this, &WebEngineHelpViewer::sourceChanged); - connect(m_widget, &QWebEngineView::loadStarted, this, &WebEngineHelpViewer::slotLoadStarted); + connect(m_widget, &QWebEngineView::loadStarted, this, [this] { + slotLoadStarted(); + // Work around QTBUG-65223: if only anchor changed, we never get a loadFinished signal + // If a link is clicked in a page, it can happen that the new URL has not yet been set, + // so we need to delay a bit... + QTimer::singleShot(/*magic timeout=*/150, this, [this] { + QUrl urlWithoutFragment = source(); + urlWithoutFragment.setFragment(QString()); + qDebug() << urlWithoutFragment << m_previousUrlWithoutFragment; + if (urlWithoutFragment == m_previousUrlWithoutFragment) + slotLoadFinished(); + m_previousUrlWithoutFragment = urlWithoutFragment; + }); + }); connect(m_widget, &QWebEngineView::loadFinished, this, &WebEngineHelpViewer::slotLoadFinished); connect(m_widget, &QWebEngineView::titleChanged, this, &WebEngineHelpViewer::titleChanged); connect(m_widget->page(), &QWebEnginePage::linkHovered, this, &WebEngineHelpViewer::setToolTip); diff --git a/src/plugins/help/webenginehelpviewer.h b/src/plugins/help/webenginehelpviewer.h index d5835c4d6a0..390e90ea654 100644 --- a/src/plugins/help/webenginehelpviewer.h +++ b/src/plugins/help/webenginehelpviewer.h @@ -97,6 +97,7 @@ public: private: WebView *m_widget; + QUrl m_previousUrlWithoutFragment; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/customtoolchain.cpp b/src/plugins/projectexplorer/customtoolchain.cpp index 0ad08032b48..2669cb8789c 100644 --- a/src/plugins/projectexplorer/customtoolchain.cpp +++ b/src/plugins/projectexplorer/customtoolchain.cpp @@ -648,13 +648,21 @@ void CustomToolChainConfigWidget::applyImpl() tc->setCompilerCommand(m_compilerCommand->fileName()); tc->setMakeCommand(m_makeCommand->fileName()); tc->setTargetAbi(m_abiWidget->currentAbi()); - tc->setPredefinedMacros(Macro::toMacros(m_predefinedDetails->text().toUtf8())); + Macros macros = Utils::transform( + m_predefinedDetails->text().split('\n', QString::SkipEmptyParts), + [](const QString &m) { + return Macro::fromKeyValue(m); + }); + tc->setPredefinedMacros(macros); tc->setHeaderPaths(m_headerDetails->entries()); tc->setCxx11Flags(m_cxx11Flags->text().split(QLatin1Char(','))); tc->setMkspecs(m_mkspecs->text()); tc->setDisplayName(displayName); // reset display name tc->setOutputParserId(Core::Id::fromSetting(m_errorParserComboBox->currentData())); tc->setCustomParserSettings(m_customParserSettings); + + setFromToolchain(); // Refresh with actual data from the toolchain. This shows what e.g. the + // macro parser did with the input. } void CustomToolChainConfigWidget::setFromToolchain() @@ -665,7 +673,10 @@ void CustomToolChainConfigWidget::setFromToolchain() m_compilerCommand->setFileName(tc->compilerCommand()); m_makeCommand->setFileName(FileName::fromString(tc->makeCommand(Environment()))); m_abiWidget->setAbis(QList(), tc->targetAbi()); - m_predefinedMacros->setPlainText(QString::fromUtf8(Macro::toByteArray(tc->rawPredefinedMacros()))); + const QStringList macroLines = Utils::transform(tc->rawPredefinedMacros(), [](const Macro &m) { + return QString::fromUtf8(m.toKeyValue(QByteArray())); + }); + m_predefinedMacros->setPlainText(macroLines.join('\n')); m_headerPaths->setPlainText(tc->headerPathsList().join('\n')); m_cxx11Flags->setText(tc->cxx11Flags().join(QLatin1Char(','))); m_mkspecs->setText(tc->mkspecs()); diff --git a/src/tools/valgrindfake/valgrindfake.qbs b/src/tools/valgrindfake/valgrindfake.qbs index 7348b1d8aff..6bd0b45e8e5 100644 --- a/src/tools/valgrindfake/valgrindfake.qbs +++ b/src/tools/valgrindfake/valgrindfake.qbs @@ -1,18 +1,12 @@ import qbs import qbs.Utilities -CppApplication { +QtcTool { name: "valgrind-fake" consoleApplication: true destinationDirectory: qtc.ide_bin_path + install: false Depends { name: "Qt"; submodules: ["network", "xml"]; } - Depends { name: "qtc" } - cpp.cxxLanguageVersion: "c++11" - - Properties { - condition: Utilities.versionCompare(Qt.core.version, "5.7") < 0 - cpp.minimumMacosVersion: project.minimumMacosVersion - } files: [ "main.cpp",