From 057bb3095b11e88cf509cea5845a6e4fabad90d8 Mon Sep 17 00:00:00 2001 From: Alexander Akulich Date: Sat, 30 Jul 2022 16:37:29 +0300 Subject: [PATCH 01/14] CMakeSettingsPage: Reload item data on CMake executable path changed This fixes missing/outdated 'Version' information and maybe useful for more data later. Change-Id: Ibf302a424d8a3c289d37fc0fabc00ab22e4bde97 Reviewed-by: Reviewed-by: Cristian Adam --- .../cmakeprojectmanager/cmakesettingspage.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp index 09a6bfbf2e9..826af0c7b67 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp @@ -433,6 +433,7 @@ public: private: void updateQchFilePath(); + void reload(); CMakeToolItemModel *m_model; QLineEdit *m_displayNameLineEdit; @@ -478,8 +479,8 @@ CMakeToolItemConfigWidget::CMakeToolItemConfigWidget(CMakeToolItemModel *model) connect(m_binaryChooser, &PathChooser::rawPathChanged, this, [this]() { updateQchFilePath(); - m_qchFileChooser->setBaseDirectory(m_binaryChooser->filePath().parentDir()); store(); + reload(); }); connect(m_qchFileChooser, &PathChooser::rawPathChanged, this, &CMakeToolItemConfigWidget::store); connect(m_displayNameLineEdit, &QLineEdit::textChanged, this, &CMakeToolItemConfigWidget::store); @@ -503,6 +504,18 @@ void CMakeToolItemConfigWidget::updateQchFilePath() m_qchFileChooser->setFilePath(CMakeTool::searchQchFile(m_binaryChooser->filePath())); } +void CMakeToolItemConfigWidget::reload() +{ + if (!m_id.isValid()) + return; + + const CMakeToolTreeItem *item = m_model->cmakeToolItem(m_id); + if (!item) + return; + + load(item); +} + void CMakeToolItemConfigWidget::load(const CMakeToolTreeItem *item) { m_loadingItem = true; // avoid intermediate signal handling From 8ae55344de7db3e29917cee4137af1e5dd68e3eb Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 3 Aug 2022 14:27:18 +0200 Subject: [PATCH 02/14] ClangCodemodel: Avoid repeated construction of category prefixes Change-Id: I0166010a17f1f37855862f28cc9e2472b638c9de Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangutils.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index c85ee98e1cf..b98ad7e91be 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -76,15 +76,14 @@ QString diagnosticCategoryPrefixRemoved(const QString &text) // Prefixes are taken from $LLVM_SOURCE_DIR/tools/clang/lib/Frontend/TextDiagnostic.cpp, // function TextDiagnostic::printDiagnosticLevel (llvm-3.6.2). static const QStringList categoryPrefixes = { - QStringLiteral("note"), - QStringLiteral("remark"), - QStringLiteral("warning"), - QStringLiteral("error"), - QStringLiteral("fatal error") + QStringLiteral("note: "), + QStringLiteral("remark: "), + QStringLiteral("warning: "), + QStringLiteral("error: "), + QStringLiteral("fatal error: ") }; - for (const QString &prefix : categoryPrefixes) { - const QString fullPrefix = prefix + QStringLiteral(": "); + for (const QString &fullPrefix : categoryPrefixes) { if (theText.startsWith(fullPrefix)) { theText.remove(0, fullPrefix.length()); return theText; From ecb658e7fc5828180a592a5346cbf0ac7d6795c6 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 3 Aug 2022 14:20:57 +0200 Subject: [PATCH 03/14] ClangCodeModel: Avoid FilePath->QString->FilePath roundtrip Change-Id: Ieb74aee5a6e8bfe8bdfe954d958e38da646fcb4d Reviewed-by: David Schulz Reviewed-by: --- src/plugins/clangcodemodel/clangtextmark.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index c9c33dc5959..23baf4231cb 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -276,7 +276,7 @@ Task createTask(const ClangDiagnostic &diagnostic) return Task(taskType, diagnosticCategoryPrefixRemoved(diagnostic.text), - FilePath::fromString(diagnostic.location.targetFilePath.toString()), + diagnostic.location.targetFilePath, diagnostic.location.targetLine, Constants::TASK_CATEGORY_DIAGNOSTICS, icon, From 9a0cadd06a728a3137bb5fdb8d17727c6356626b Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 4 Aug 2022 07:16:45 +0200 Subject: [PATCH 04/14] Tests: Fix dumper expectation Amends c1d75d8df715b. Change-Id: Ib69c095a9f94fa618f5c9791d4c908fbefa5ecb3 Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index b4dbe279c05..f682d6165e6 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -4251,7 +4251,7 @@ void tst_Dumpers::dumper_data() //+ Check("var72", "", "@QVariant (QRegion)") FIXME + Check("var73", "", "@QVariant (QBitmap)") + Check("var74", "", "@QVariant (QCursor)") - + Check("var75", "", "@QVariant (QKeySequence)") % NoLldbEngine // FIXME + + Check("var75", "(0x0, 0x0, 0x0, 0x0)", "@QVariant (QKeySequence)") + Check("var76", "", "@QVariant (QPen)") + Check("var77", "", "@QVariant (QTextLength)") //+ Check("var78", Value5(""), "@QVariant (QTextFormat)") From 5b67f03416989029f9e023e9662abc4983b87447 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 4 Aug 2022 08:30:48 +0200 Subject: [PATCH 05/14] Dumper: Fix bitfield handling on macOS Amends f14634a65151a. Change-Id: Iae1c7ad9c78786c9178a07a493abb76db3b4c4aa Reviewed-by: hjk --- share/qtcreator/debugger/dumper.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index a8b0bf108a8..14a3d35a8fe 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -3227,7 +3227,10 @@ class DumperBase(): lbyte = ldata[i] else: lbyte = ldata[fieldOffset + fieldSize - 1 - i] - data += ord(lbyte) + if isinstance(lbyte, (str, bytes)): + data += ord(lbyte) + else: + data += lbyte data = data >> fieldBitpos data = data & ((1 << fieldBitsize) - 1) val.lvalue = data From 67903cec2f0d602fc6f39b9dce33a0d5f96c8beb Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 4 Aug 2022 09:43:10 +0200 Subject: [PATCH 06/14] Tests: Fix flamegraphview test for Qt6 Change-Id: I38271f05c615290cddb4dba5579193a68fd32370 Reviewed-by: Ulf Hermann --- .../auto/tracing/flamegraphview/tst_flamegraphview.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/auto/tracing/flamegraphview/tst_flamegraphview.cpp b/tests/auto/tracing/flamegraphview/tst_flamegraphview.cpp index 9e217216870..f7d154cd220 100644 --- a/tests/auto/tracing/flamegraphview/tst_flamegraphview.cpp +++ b/tests/auto/tracing/flamegraphview/tst_flamegraphview.cpp @@ -112,20 +112,20 @@ void tst_FlameGraphView::testZoom() QWindow *window = widget.windowHandle(); QCOMPARE(selectedTypeId(), -1); - QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() - 15, - widget.height() - 15)); + QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() - 25, + widget.height() - 25)); QTRY_VERIFY(selectedTypeId() != -1); const int typeId1 = selectedTypeId(); - QTest::mouseDClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(15, widget.height() - 15)); + QTest::mouseDClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(25, widget.height() - 25)); QTRY_VERIFY(selectedTypeId() != typeId1); QVERIFY(selectedTypeId() != -1); QTest::mouseDClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() / 2, widget.height() / 2)); QTRY_COMPARE(selectedTypeId(), -1); - QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() - 15, - widget.height() - 15)); + QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() - 25, + widget.height() - 25)); QTRY_COMPARE(selectedTypeId(), typeId1); } From 674efc0f95dc86a174920914543b857cef667535 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 4 Aug 2022 08:42:48 +0200 Subject: [PATCH 07/14] TextEditor: schedule update document layout When generating a lot of text marks we do not need to update the document for every mark and every property that changes. Change-Id: Ibba80138f6ebcbbe30a4f741979df69ad62608c1 Reviewed-by: hjk --- src/plugins/texteditor/textdocument.cpp | 13 ++++++++++--- src/plugins/texteditor/textdocument.h | 1 + src/plugins/texteditor/textdocumentlayout.cpp | 14 ++++++++++++++ src/plugins/texteditor/textdocumentlayout.h | 5 +++++ src/plugins/texteditor/textmark.cpp | 2 +- 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/plugins/texteditor/textdocument.cpp b/src/plugins/texteditor/textdocument.cpp index 195a48f62c6..8c560c14959 100644 --- a/src/plugins/texteditor/textdocument.cpp +++ b/src/plugins/texteditor/textdocument.cpp @@ -970,6 +970,13 @@ void TextDocument::updateLayout() const documentLayout->requestUpdate(); } +void TextDocument::scheduleUpdateLayout() const +{ + auto documentLayout = qobject_cast(d->m_document.documentLayout()); + QTC_ASSERT(documentLayout, return); + documentLayout->scheduleUpdate(); +} + TextMarks TextDocument::marks() const { return d->m_marksCache; @@ -1001,7 +1008,7 @@ bool TextDocument::addMark(TextMark *mark) documentLayout->hasMarks = true; documentLayout->maxMarkWidthFactor = newMaxWidthFactor; if (fullUpdate) - documentLayout->requestUpdate(); + documentLayout->scheduleUpdate(); else documentLayout->requestExtraAreaUpdate(); return true; @@ -1080,7 +1087,7 @@ void TextDocument::removeMark(TextMark *mark) removeMarkFromMarksCache(mark); emit markRemoved(mark); mark->setBaseTextDocument(nullptr); - updateLayout(); + scheduleUpdateLayout(); } void TextDocument::updateMark(TextMark *mark) @@ -1092,7 +1099,7 @@ void TextDocument::updateMark(TextMark *mark) userData->removeMark(mark); userData->addMark(mark); } - updateLayout(); + scheduleUpdateLayout(); } void TextDocument::moveMark(TextMark *mark, int previousLine) diff --git a/src/plugins/texteditor/textdocument.h b/src/plugins/texteditor/textdocument.h index b66046c076b..b11d1a3a588 100644 --- a/src/plugins/texteditor/textdocument.h +++ b/src/plugins/texteditor/textdocument.h @@ -112,6 +112,7 @@ public: TextMarks marksAt(int line) const; void removeMark(TextMark *mark); void updateLayout() const; + void scheduleUpdateLayout() const; void updateMark(TextMark *mark); void moveMark(TextMark *mark, int previousLine); void removeMarkFromMarksCache(TextMark *mark); diff --git a/src/plugins/texteditor/textdocumentlayout.cpp b/src/plugins/texteditor/textdocumentlayout.cpp index 64a7375f369..beabf503dfd 100644 --- a/src/plugins/texteditor/textdocumentlayout.cpp +++ b/src/plugins/texteditor/textdocumentlayout.cpp @@ -638,6 +638,20 @@ void TextDocumentLayout::updateMarksBlock(const QTextBlock &block) } } +void TextDocumentLayout::scheduleUpdate() +{ + if (m_updateScheduled) + return; + m_updateScheduled = true; + QMetaObject::invokeMethod(this, &TextDocumentLayout::requestUpdateNow, Qt::QueuedConnection); +} + +void TextDocumentLayout::requestUpdateNow() +{ + m_updateScheduled = false; + requestUpdate(); +} + QRectF TextDocumentLayout::blockBoundingRect(const QTextBlock &block) const { QRectF boundingRect = QPlainTextDocumentLayout::blockBoundingRect(block); diff --git a/src/plugins/texteditor/textdocumentlayout.h b/src/plugins/texteditor/textdocumentlayout.h index 3bed9f7bc5d..1b0bb8b5e18 100644 --- a/src/plugins/texteditor/textdocumentlayout.h +++ b/src/plugins/texteditor/textdocumentlayout.h @@ -237,6 +237,11 @@ public: void documentReloaded(TextMarks marks, TextDocument *baseextDocument); void updateMarksLineNumber(); void updateMarksBlock(const QTextBlock &block); + void scheduleUpdate(); + void requestUpdateNow(); + +private: + bool m_updateScheduled = false; signals: void updateExtraArea(); diff --git a/src/plugins/texteditor/textmark.cpp b/src/plugins/texteditor/textmark.cpp index 386bd72ef27..72f89e7648c 100644 --- a/src/plugins/texteditor/textmark.cpp +++ b/src/plugins/texteditor/textmark.cpp @@ -242,7 +242,7 @@ void TextMark::removedFromEditor() void TextMark::updateMarker() { if (m_baseTextDocument) - m_baseTextDocument->updateLayout(); + m_baseTextDocument->scheduleUpdateLayout(); } void TextMark::setPriority(TextMark::Priority prioriy) From 184a9cbd64f852edc9e0b04e1859e17a597c5367 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 4 Aug 2022 11:05:17 +0200 Subject: [PATCH 08/14] QmlPuppet: #include in generalhelper.h CI was complaining. Change-Id: I7b2da474d3197de4c046efc0e2e54ab19b8d3663 Reviewed-by: Samuel Ghinet Reviewed-by: hjk --- .../qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h | 1 + 1 file changed, 1 insertion(+) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h index e3ae249755d..8bda11ddd27 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h @@ -27,6 +27,7 @@ #ifdef QUICK3D_MODULE +#include #include #include #include From 371d9ffe0fc7c2f68fc4b0c040d9989d44da1df3 Mon Sep 17 00:00:00 2001 From: Knud Dollereder Date: Tue, 2 Aug 2022 13:25:08 +0200 Subject: [PATCH 09/14] Fix a wrong property conversion QVariant::canConvert returns just the general ability to convert from one type to the other and does not reflect if the specific string inside the variant can be converted. For this reason tmp.canConvert(QMetaType::Double) returned always true which lead to colors inside keyframes becoming black as soon as the scene was saved. Fixes: QDS-6960 Change-Id: I1a267d93a7cffb080ae884df490e5723592a2780 Reviewed-by: Reviewed-by: Aleksei German --- .../qmldesigner/designercore/model/propertyparser.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/propertyparser.cpp b/src/plugins/qmldesigner/designercore/model/propertyparser.cpp index eab05e0adc4..21fcc0fa566 100644 --- a/src/plugins/qmldesigner/designercore/model/propertyparser.cpp +++ b/src/plugins/qmldesigner/designercore/model/propertyparser.cpp @@ -249,14 +249,11 @@ QVariant read(int variantType, const QString &str) if (str == "false") return false; - auto tmp = QVariant(str); - conversionOk = tmp.isValid(); - value = QVariant(tmp); + if (auto f = QVariant(str).toDouble(&conversionOk); conversionOk) + return f; + else if (auto c = colorFromString(str, &conversionOk); conversionOk) + return c; - if (tmp.canConvert(QMetaType::Double)) - value.convert(QMetaType::Double); - else if (tmp.canConvert(QMetaType::QColor)) - value.convert(QMetaType::QColor); break; } case QMetaType::QPoint: From d3ea90ec208d6e9d450ff3054fa2438c141e0eb0 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 3 Aug 2022 13:49:07 +0200 Subject: [PATCH 10/14] Utils: Cache the last QIcon created from a Utils::Icon This rarely changes, but was re-computed/re-painted for each text mark etc. Change-Id: I9f4b0f2f2a88f0a267ecdd0faa983677eb634751 Reviewed-by: David Schulz --- src/libs/utils/icon.cpp | 32 ++++++++++++++++++-------------- src/libs/utils/icon.h | 2 ++ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/libs/utils/icon.cpp b/src/libs/utils/icon.cpp index bdf8601dcc2..a4ae9b81ed2 100644 --- a/src/libs/utils/icon.cpp +++ b/src/libs/utils/icon.cpp @@ -169,23 +169,27 @@ Icon::Icon(const FilePath &imageFileName) QIcon Icon::icon() const { - if (m_iconSourceList.isEmpty()) { + if (m_iconSourceList.isEmpty()) return QIcon(); - } else if (m_style == None) { - return QIcon(m_iconSourceList.constFirst().first.toString()); - } else { - QIcon result; - const int maxDpr = qRound(qApp->devicePixelRatio()); - for (int dpr = 1; dpr <= maxDpr; dpr++) { - const MasksAndColors masks = masksAndColors(m_iconSourceList, dpr); - const QPixmap combinedMask = Utils::combinedMask(masks, m_style); - result.addPixmap(masksToIcon(masks, combinedMask, m_style)); - const QColor disabledColor = creatorTheme()->color(Theme::IconsDisabledColor); - result.addPixmap(maskToColorAndAlpha(combinedMask, disabledColor), QIcon::Disabled); - } - return result; + if (m_style == None) + return QIcon(m_iconSourceList.constFirst().first.toString()); + + const int maxDpr = qRound(qApp->devicePixelRatio()); + if (maxDpr == m_lastDevicePixelRatio) + return m_lastIcon; + + m_lastDevicePixelRatio = maxDpr; + m_lastIcon = QIcon(); + for (int dpr = 1; dpr <= maxDpr; dpr++) { + const MasksAndColors masks = masksAndColors(m_iconSourceList, dpr); + const QPixmap combinedMask = Utils::combinedMask(masks, m_style); + m_lastIcon.addPixmap(masksToIcon(masks, combinedMask, m_style)); + + const QColor disabledColor = creatorTheme()->color(Theme::IconsDisabledColor); + m_lastIcon.addPixmap(maskToColorAndAlpha(combinedMask, disabledColor), QIcon::Disabled); } + return m_lastIcon; } QPixmap Icon::pixmap(QIcon::Mode iconMode) const diff --git a/src/libs/utils/icon.h b/src/libs/utils/icon.h index d2352be5055..286644eb84a 100644 --- a/src/libs/utils/icon.h +++ b/src/libs/utils/icon.h @@ -88,6 +88,8 @@ public: private: QVector m_iconSourceList; IconStyleOptions m_style = None; + mutable int m_lastDevicePixelRatio = -1; + mutable QIcon m_lastIcon; }; } // namespace Utils From c68f901aa893f0a7254251e0fb940e74b76fc0f7 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 3 Aug 2022 15:25:17 +0200 Subject: [PATCH 11/14] TextMark: Delay context menu tooltip action creation Change-Id: I25bad9a774a6d95162251c8f0512eb3f8439d9ae Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangtextmark.cpp | 45 ++++++++++--------- src/plugins/clangtools/diagnosticmark.cpp | 40 ++++++++--------- src/plugins/cppcheck/cppchecktextmark.cpp | 25 ++++++----- .../languageclient/diagnosticmanager.cpp | 16 ++++--- src/plugins/texteditor/textmark.cpp | 34 ++++++++------ src/plugins/texteditor/textmark.h | 6 ++- 6 files changed, 89 insertions(+), 77 deletions(-) diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index 23baf4231cb..94ad1c82f86 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -309,31 +309,32 @@ ClangdTextMark::ClangdTextMark(const FilePath &filePath, client->addTask(createTask(m_diagnostic)); } - // Copy to clipboard action - QVector actions; - QAction *action = new QAction(); - action->setIcon(QIcon::fromTheme("edit-copy", Icons::COPY.icon())); - action->setToolTip(tr("Copy to Clipboard", "Clang Code Model Marks")); - QObject::connect(action, &QAction::triggered, [diag = m_diagnostic]() { - const QString text = ClangDiagnosticWidget::createText({diag}, - ClangDiagnosticWidget::InfoBar); - setClipboardAndSelection(text); - }); - actions << action; - - // Remove diagnostic warning action - Project *project = projectForCurrentEditor(); - if (project && isDiagnosticConfigChangable(project, m_diagnostic)) { - action = new QAction(); - action->setIcon(Icons::BROKEN.icon()); - action->setToolTip(tr("Disable Diagnostic in Current Project")); - QObject::connect(action, &QAction::triggered, [diag = m_diagnostic]() { - disableDiagnosticInCurrentProjectConfig(diag); + setActionsProvider([diag = m_diagnostic] { + // Copy to clipboard action + QList actions; + QAction *action = new QAction(); + action->setIcon(QIcon::fromTheme("edit-copy", Icons::COPY.icon())); + action->setToolTip(tr("Copy to Clipboard", "Clang Code Model Marks")); + QObject::connect(action, &QAction::triggered, [diag] { + const QString text = ClangDiagnosticWidget::createText({diag}, + ClangDiagnosticWidget::InfoBar); + setClipboardAndSelection(text); }); actions << action; - } - setActions(actions); + // Remove diagnostic warning action + Project *project = projectForCurrentEditor(); + if (project && isDiagnosticConfigChangable(project, diag)) { + action = new QAction(); + action->setIcon(Icons::BROKEN.icon()); + action->setToolTip(tr("Disable Diagnostic in Current Project")); + QObject::connect(action, &QAction::triggered, [diag] { + disableDiagnosticInCurrentProjectConfig(diag); + }); + actions << action; + } + return actions; + }); } bool ClangdTextMark::addToolTipContent(QLayout *target) const diff --git a/src/plugins/clangtools/diagnosticmark.cpp b/src/plugins/clangtools/diagnosticmark.cpp index 37dd7693921..985d917b80d 100644 --- a/src/plugins/clangtools/diagnosticmark.cpp +++ b/src/plugins/clangtools/diagnosticmark.cpp @@ -54,28 +54,28 @@ DiagnosticMark::DiagnosticMark(const Diagnostic &diagnostic) setIcon(markIcon.isNull() ? Utils::Icons::CODEMODEL_WARNING.icon() : markIcon); setToolTip(createDiagnosticToolTipString(diagnostic, Utils::nullopt, true)); setLineAnnotation(diagnostic.description); + setActionsProvider([diagnostic] { + // Copy to clipboard action + QList actions; + QAction *action = new QAction(); + action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon())); + action->setToolTip(tr("Copy to Clipboard")); + QObject::connect(action, &QAction::triggered, [diagnostic]() { + const QString text = createFullLocationString(diagnostic.location) + + ": " + + diagnostic.description; + Utils::setClipboardAndSelection(text); + }); + actions << action; - // Copy to clipboard action - QVector actions; - QAction *action = new QAction(); - action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon())); - action->setToolTip(tr("Copy to Clipboard")); - QObject::connect(action, &QAction::triggered, [diagnostic]() { - const QString text = createFullLocationString(diagnostic.location) - + ": " - + diagnostic.description; - Utils::setClipboardAndSelection(text); + // Disable diagnostic action + action = new QAction(); + action->setIcon(Utils::Icons::BROKEN.icon()); + action->setToolTip(tr("Disable Diagnostic")); + QObject::connect(action, &QAction::triggered, [diagnostic] { disableChecks({diagnostic}); }); + actions << action; + return actions; }); - actions << action; - - // Disable diagnostic action - action = new QAction(); - action->setIcon(Utils::Icons::BROKEN.icon()); - action->setToolTip(tr("Disable Diagnostic")); - QObject::connect(action, &QAction::triggered, [diagnostic] { disableChecks({diagnostic}); }); - actions << action; - - setActions(actions); } void DiagnosticMark::disable() diff --git a/src/plugins/cppcheck/cppchecktextmark.cpp b/src/plugins/cppcheck/cppchecktextmark.cpp index d3446a0610b..a81ac7e6f74 100644 --- a/src/plugins/cppcheck/cppchecktextmark.cpp +++ b/src/plugins/cppcheck/cppchecktextmark.cpp @@ -80,19 +80,20 @@ CppcheckTextMark::CppcheckTextMark (const Diagnostic &diagnostic) setToolTip(toolTipText(diagnostic.severityText)); setLineAnnotation(diagnostic.message); setSettingsPage(Constants::OPTIONS_PAGE_ID); - - // Copy to clipboard action - QAction *action = new QAction(); - action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon())); - action->setToolTip(TextMark::tr("Copy to Clipboard")); - QObject::connect(action, &QAction::triggered, [diagnostic]() { - const QString text = QString("%1:%2: %3") - .arg(diagnostic.fileName.toUserOutput()) - .arg(diagnostic.lineNumber) - .arg(diagnostic.message); - QApplication::clipboard()->setText(text); + setActionsProvider([diagnostic] { + // Copy to clipboard action + QAction *action = new QAction; + action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon())); + action->setToolTip(TextMark::tr("Copy to Clipboard")); + QObject::connect(action, &QAction::triggered, [diagnostic]() { + const QString text = QString("%1:%2: %3") + .arg(diagnostic.fileName.toUserOutput()) + .arg(diagnostic.lineNumber) + .arg(diagnostic.message); + QApplication::clipboard()->setText(text); + }); + return QList{action}; }); - setActions({action}); } QString CppcheckTextMark::toolTipText(const QString &severityText) const diff --git a/src/plugins/languageclient/diagnosticmanager.cpp b/src/plugins/languageclient/diagnosticmanager.cpp index e81bda7bd8a..cd6cad7e1d9 100644 --- a/src/plugins/languageclient/diagnosticmanager.cpp +++ b/src/plugins/languageclient/diagnosticmanager.cpp @@ -143,14 +143,16 @@ TextEditor::TextMark *DiagnosticManager::createTextMark(const FilePath &filePath { static const auto icon = QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon()); static const QString tooltip = tr("Copy to Clipboard"); - QAction *action = new QAction(); - action->setIcon(icon); - action->setToolTip(tooltip); - QObject::connect(action, &QAction::triggered, [text = diagnostic.message()]() { - QApplication::clipboard()->setText(text); - }); auto mark = new TextMark(filePath, diagnostic, m_client->id()); - mark->setActions({action}); + mark->setActionsProvider([text = diagnostic.message()] { + QAction *action = new QAction(); + action->setIcon(icon); + action->setToolTip(tooltip); + QObject::connect(action, &QAction::triggered, [text] { + QApplication::clipboard()->setText(text); + }); + return QList{action}; + }); return mark; } diff --git a/src/plugins/texteditor/textmark.cpp b/src/plugins/texteditor/textmark.cpp index 72f89e7648c..635e1a0c9bc 100644 --- a/src/plugins/texteditor/textmark.cpp +++ b/src/plugins/texteditor/textmark.cpp @@ -97,9 +97,6 @@ TextMark::TextMark(const FilePath &fileName, int lineNumber, Id category, double TextMark::~TextMark() { - qDeleteAll(m_actions); - m_actions.clear(); - delete m_settingsAction; if (!m_fileName.isEmpty()) TextMarkRegistry::remove(this); if (m_baseTextDocument) @@ -311,19 +308,29 @@ void TextMark::addToToolTipLayout(QGridLayout *target) const target->addLayout(contentLayout, row, 1); // Right column: action icons/button - QVector actions = m_actions; - if (m_settingsAction) - actions << m_settingsAction; + QList actions{m_actions.begin(), m_actions.end()}; + if (m_actionsProvider) + actions = m_actionsProvider(); + if (m_settingsPage.isValid()) { + auto settingsAction = new QAction; + settingsAction->setIcon(Utils::Icons::SETTINGS_TOOLBAR.icon()); + settingsAction->setToolTip(tr("Show Diagnostic Settings")); + QObject::connect(settingsAction, &QAction::triggered, Core::ICore::instance(), + [id = m_settingsPage] { Core::ICore::showOptionsDialog(id); }, + Qt::QueuedConnection); + actions.append(settingsAction); + } if (!actions.isEmpty()) { auto actionsLayout = new QHBoxLayout; QMargins margins = actionsLayout->contentsMargins(); margins.setLeft(margins.left() + 5); actionsLayout->setContentsMargins(margins); for (QAction *action : qAsConst(actions)) { - QTC_ASSERT(!action->icon().isNull(), continue); + QTC_ASSERT(!action->icon().isNull(), delete action; continue); auto button = new QToolButton; button->setIcon(action->icon()); button->setToolTip(action->toolTip()); + action->setParent(button); QObject::connect(button, &QToolButton::clicked, action, &QAction::triggered); QObject::connect(button, &QToolButton::clicked, []() { Utils::ToolTip::hideImmediately(); @@ -423,15 +430,14 @@ void TextMark::setActions(const QVector &actions) m_actions = actions; } +void TextMark::setActionsProvider(const std::function()> &actionsProvider) +{ + m_actionsProvider = actionsProvider; +} + void TextMark::setSettingsPage(Id settingsPage) { - delete m_settingsAction; - m_settingsAction = new QAction; - m_settingsAction->setIcon(Utils::Icons::SETTINGS_TOOLBAR.icon()); - m_settingsAction->setToolTip(tr("Show Diagnostic Settings")); - QObject::connect(m_settingsAction, &QAction::triggered, Core::ICore::instance(), - [settingsPage] { Core::ICore::showOptionsDialog(settingsPage); }, - Qt::QueuedConnection); + m_settingsPage = settingsPage; } TextMarkRegistry::TextMarkRegistry(QObject *parent) diff --git a/src/plugins/texteditor/textmark.h b/src/plugins/texteditor/textmark.h index 6184861ce98..d191ee07a73 100644 --- a/src/plugins/texteditor/textmark.h +++ b/src/plugins/texteditor/textmark.h @@ -133,6 +133,7 @@ public: QVector actions() const; void setActions(const QVector &actions); // Takes ownership + void setActionsProvider(const std::function()> &actionsProvider); // Takes ownership protected: void setSettingsPage(Utils::Id settingsPage); @@ -154,8 +155,9 @@ private: QString m_toolTip; std::function m_toolTipProvider; QString m_defaultToolTip; - QVector m_actions; - QAction *m_settingsAction = nullptr; + QVector m_actions; // FIXME Remove in master + std::function()> m_actionsProvider; + Utils::Id m_settingsPage; }; } // namespace TextEditor From 0a1edae9de2adf1ad41ad52ad2bc7f3b3a602733 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 3 Aug 2022 13:00:54 +0200 Subject: [PATCH 12/14] LSP: Use char16_t literals for keys into json objects Allows use of QStringView based QJson* functions. Change-Id: I6f39306652bea3abecdcf9e1d4ae494a6b9101c7 Reviewed-by: David Schulz --- .../languageserverprotocol/basemessage.cpp | 7 + .../clientcapabilities.h | 2 +- src/libs/languageserverprotocol/jsonkeys.h | 422 +++++++++--------- .../languageserverprotocol/jsonobject.cpp | 4 +- src/libs/languageserverprotocol/jsonobject.h | 62 +-- src/libs/languageserverprotocol/workspace.h | 2 +- src/plugins/clangcodemodel/clangdast.cpp | 4 +- src/plugins/clangcodemodel/clangdclient.cpp | 14 +- src/plugins/coco/cocolanguageclient.cpp | 2 +- src/plugins/languageclient/lspinspector.cpp | 2 +- 10 files changed, 261 insertions(+), 260 deletions(-) diff --git a/src/libs/languageserverprotocol/basemessage.cpp b/src/libs/languageserverprotocol/basemessage.cpp index 4e5f621ca01..ee0450010a3 100644 --- a/src/libs/languageserverprotocol/basemessage.cpp +++ b/src/libs/languageserverprotocol/basemessage.cpp @@ -37,6 +37,13 @@ namespace LanguageServerProtocol { Q_LOGGING_CATEGORY(parseLog, "qtc.languageserverprotocol.parse", QtWarningMsg) +constexpr char headerFieldSeparator[] = ": "; +constexpr char contentCharsetName[] = "charset"; +constexpr char defaultCharset[] = "utf-8"; +constexpr char contentLengthFieldName[] = "Content-Length"; +constexpr char headerSeparator[] = "\r\n"; +constexpr char contentTypeFieldName[] = "Content-Type"; + BaseMessage::BaseMessage() : mimeType(JsonRpcMessage::jsonRpcMimeType()) { } diff --git a/src/libs/languageserverprotocol/clientcapabilities.h b/src/libs/languageserverprotocol/clientcapabilities.h index bc6151a1740..93a7181de76 100644 --- a/src/libs/languageserverprotocol/clientcapabilities.h +++ b/src/libs/languageserverprotocol/clientcapabilities.h @@ -626,7 +626,7 @@ public: void clearWorkDoneProgress() { remove(workDoneProgressKey); } private: - constexpr static const char workDoneProgressKey[] = "workDoneProgress"; + constexpr static const char16_t workDoneProgressKey[] = u"workDoneProgress"; }; class LANGUAGESERVERPROTOCOL_EXPORT ClientCapabilities : public JsonObject diff --git a/src/libs/languageserverprotocol/jsonkeys.h b/src/libs/languageserverprotocol/jsonkeys.h index 3c520ebad93..a8e33ae0575 100644 --- a/src/libs/languageserverprotocol/jsonkeys.h +++ b/src/libs/languageserverprotocol/jsonkeys.h @@ -27,219 +27,213 @@ namespace LanguageServerProtocol { -constexpr char actionsKey[] = "actions"; -constexpr char activeParameterKey[] = "activeParameter"; -constexpr char activeParameterSupportKey[] = "activeParameterSupport"; -constexpr char activeSignatureKey[] = "activeSignature"; -constexpr char addedKey[] = "added"; -constexpr char additionalTextEditsKey[] = "additionalTextEdits"; -constexpr char alphaKey[] = "alpha"; -constexpr char appliedKey[] = "applied"; -constexpr char applyEditKey[] = "applyEdit"; -constexpr char argumentsKey[] = "arguments"; -constexpr char blueKey[] = "blue"; -constexpr char cancellableKey[] = "cancellable"; -constexpr char capabilitiesKey[] = "capabilities"; -constexpr char chKey[] = "ch"; -constexpr char changeKey[] = "change"; -constexpr char changeNotificationsKey[] = "changeNotifications"; -constexpr char changesKey[] = "changes"; -constexpr char characterKey[] = "character"; -constexpr char childrenKey[] = "children"; -constexpr char clientInfoKey[] = "clientInfo"; -constexpr char codeActionKey[] = "codeAction"; -constexpr char codeActionKindKey[] = "codeActionKind"; -constexpr char codeActionKindsKey[] = "codeActionKinds"; -constexpr char codeActionLiteralSupportKey[] = "codeActionLiteralSupport"; -constexpr char codeActionProviderKey[] = "codeActionProvider"; -constexpr char codeKey[] = "code"; -constexpr char codeLensKey[] = "codeLens"; -constexpr char codeLensProviderKey[] = "codeLensProvider"; -constexpr char colorInfoKey[] = "colorInfo"; -constexpr char colorKey[] = "color"; -constexpr char colorProviderKey[] = "colorProvider"; -constexpr char commandKey[] = "command"; -constexpr char commandsKey[] = "commands"; -constexpr char commitCharacterSupportKey[] = "commitCharacterSupport"; -constexpr char commitCharactersKey[] = "commitCharacters"; -constexpr char completionItemKey[] = "completionItem"; -constexpr char completionItemKindKey[] = "completionItemKind"; -constexpr char completionKey[] = "completion"; -constexpr char completionProviderKey[] = "completionProvider"; -constexpr char configurationKey[] = "configuration"; -constexpr char containerNameKey[] = "containerName"; -constexpr char contentChangesKey[] = "contentChanges"; -constexpr char contentCharsetName[] = "charset"; -constexpr char contentFormatKey[] = "contentFormat"; -constexpr char contentKey[] = "value"; -constexpr char contentLengthFieldName[] = "Content-Length"; -constexpr char contentTypeFieldName[] = "Content-Type"; -constexpr char contentsKey[] = "contents"; -constexpr char contextKey[] = "context"; -constexpr char contextSupportKey[] = "contextSupport"; -constexpr char dataKey[] = "data"; -constexpr char defaultCharset[] = "utf-8"; -constexpr char definitionKey[] = "definition"; -constexpr char definitionProviderKey[] = "definitionProvider"; -constexpr char deleteCountKey[] = "deleteCount"; -constexpr char deltaKey[] = "delta"; -constexpr char deprecatedKey[] = "deprecated"; -constexpr char detailKey[] = "detail"; -constexpr char diagnosticsKey[] = "diagnostics"; -constexpr char didChangeConfigurationKey[] = "didChangeConfiguration"; -constexpr char didChangeWatchedFilesKey[] = "didChangeWatchedFiles"; -constexpr char didSaveKey[] = "didSave"; -constexpr char documentChangesKey[] = "documentChanges"; -constexpr char documentFormattingProviderKey[] = "documentFormattingProvider"; -constexpr char documentHighlightKey[] = "documentHighlight"; -constexpr char documentHighlightProviderKey[] = "documentHighlightProvider"; -constexpr char documentLinkKey[] = "documentLink"; -constexpr char documentLinkProviderKey[] = "documentLinkProvider"; -constexpr char documentRangeFormattingProviderKey[] = "documentRangeFormattingProvider"; -constexpr char documentSelectorKey[] = "documentSelector"; -constexpr char documentSymbolKey[] = "documentSymbol"; -constexpr char documentSymbolProviderKey[] = "documentSymbolProvider"; -constexpr char documentationFormatKey[] = "documentationFormat"; -constexpr char documentationKey[] = "documentation"; -constexpr char dynamicRegistrationKey[] = "dynamicRegistration"; -constexpr char editKey[] = "edit"; -constexpr char editsKey[] = "edits"; -constexpr char endKey[] = "end"; -constexpr char errorKey[] = "error"; -constexpr char eventKey[] = "event"; -constexpr char executeCommandKey[] = "executeCommand"; -constexpr char executeCommandProviderKey[] = "executeCommandProvider"; -constexpr char experimentalKey[] = "experimental"; -constexpr char filterTextKey[] = "filterText"; -constexpr char firstTriggerCharacterKey[] = "firstTriggerCharacter"; -constexpr char formatsKey[] = "formats"; -constexpr char formattingKey[] = "formatting"; -constexpr char fullKey[] = "full"; -constexpr char greenKey[] = "green"; -constexpr char headerFieldSeparator[] = ": "; -constexpr char headerSeparator[] = "\r\n"; -constexpr char hierarchicalDocumentSymbolSupportKey[] = "hierarchicalDocumentSymbolSupport"; -constexpr char hoverKey[] = "hover"; -constexpr char hoverProviderKey[] = "hoverProvider"; -constexpr char idKey[] = "id"; -constexpr char implementationKey[] = "implementation"; -constexpr char implementationProviderKey[] = "implementationProvider"; -constexpr char includeDeclarationKey[] = "includeDeclaration"; -constexpr char includeTextKey[] = "includeText"; -constexpr char initializationOptionsKey[] = "initializationOptions"; -constexpr char insertFinalNewlineKey[] = "insertFinalNewline"; -constexpr char insertSpaceKey[] = "insertSpace"; -constexpr char insertTextFormatKey[] = "insertTextFormat"; -constexpr char insertTextKey[] = "insertText"; -constexpr char isIncompleteKey[] = "isIncomplete"; -constexpr char itemsKey[] = "items"; -constexpr char jsonRpcVersionKey[] = "jsonrpc"; -constexpr char kindKey[] = "kind"; -constexpr char labelKey[] = "label"; -constexpr char languageIdKey[] = "languageId"; -constexpr char languageKey[] = "language"; -constexpr char legendKey[] = "legend"; -constexpr char lineKey[] = "line"; -constexpr char linesKey[] = "lines"; -constexpr char locationKey[] = "location"; -constexpr char messageKey[] = "message"; -constexpr char methodKey[] = "method"; -constexpr char moreTriggerCharacterKey[] = "moreTriggerCharacter"; -constexpr char multiLineTokenSupportKey[] = "multiLineTokenSupport"; -constexpr char nameKey[] = "name"; -constexpr char newNameKey[] = "newName"; -constexpr char newTextKey[] = "newText"; -constexpr char onTypeFormattingKey[] = "onTypeFormatting"; -constexpr char onlyKey[] = "only"; -constexpr char openCloseKey[] = "openClose"; -constexpr char optionsKey[] = "options"; -constexpr char overlappingTokenSupportKey[] = "overlappingTokenSupport"; -constexpr char parametersKey[] = "parameters"; -constexpr char paramsKey[] = "params"; -constexpr char patternKey[] = "pattern"; -constexpr char percentageKey[] = "percentage"; -constexpr char placeHolderKey[] = "placeHolder"; -constexpr char positionKey[] = "position"; -constexpr char prepareProviderKey[] = "prepareProvider"; -constexpr char prepareSupportKey[] = "prepareSupport"; -constexpr char previousResultIdKey[] = "previousResultId"; -constexpr char processIdKey[] = "processId"; -constexpr char queryKey[] = "query"; -constexpr char rangeFormattingKey[] = "rangeFormatting"; -constexpr char rangeKey[] = "range"; -constexpr char rangeLengthKey[] = "rangeLength"; -constexpr char reasonKey[] = "reason"; -constexpr char redKey[] = "red"; -constexpr char referencesKey[] = "references"; -constexpr char referencesProviderKey[] = "referencesProvider"; -constexpr char refreshSupportKey[] = "refreshSupport"; -constexpr char registerOptionsKey[] = "registerOptions"; -constexpr char registrationsKey[] = "registrations"; -constexpr char removedKey[] = "removed"; -constexpr char renameKey[] = "rename"; -constexpr char renameProviderKey[] = "renameProvider"; -constexpr char requestsKey[] = "requests"; -constexpr char resolveProviderKey[] = "resolveProvider"; -constexpr char resultIdKey[] = "resultId"; -constexpr char resultKey[] = "result"; -constexpr char retryKey[] = "retry"; -constexpr char rootPathKey[] = "rootPath"; -constexpr char rootUriKey[] = "rootUri"; -constexpr char saveKey[] = "save"; -constexpr char schemeKey[] = "scheme"; -constexpr char scopeUriKey[] = "scopeUri"; -constexpr char sectionKey[] = "section"; -constexpr char selectionRangeKey[] = "selectionRange"; -constexpr char semanticTokensKey[] = "semanticTokens"; -constexpr char semanticTokensProviderKey[] = "semanticTokensProvider"; -constexpr char serverInfoKey[] = "serverInfo"; -constexpr char settingsKey[] = "settings"; -constexpr char severityKey[] = "severity"; -constexpr char signatureHelpKey[] = "signatureHelp"; -constexpr char signatureHelpProviderKey[] = "signatureHelpProvider"; -constexpr char signatureInformationKey[] = "signatureInformation"; -constexpr char signaturesKey[] = "signatures"; -constexpr char snippetSupportKey[] = "snippetSupport"; -constexpr char sortTextKey[] = "sortText"; -constexpr char sourceKey[] = "source"; -constexpr char startKey[] = "start"; -constexpr char supportedKey[] = "supported"; -constexpr char symbolKey[] = "symbol"; -constexpr char symbolKindKey[] = "symbolKind"; -constexpr char syncKindKey[] = "syncKind"; -constexpr char synchronizationKey[] = "synchronization"; -constexpr char tabSizeKey[] = "tabSize"; -constexpr char tagsKey[] = "tags"; -constexpr char targetKey[] = "target"; -constexpr char textDocumentKey[] = "textDocument"; -constexpr char textDocumentSyncKey[] = "textDocumentSync"; -constexpr char textEditKey[] = "textEdit"; -constexpr char textKey[] = "text"; -constexpr char titleKey[] = "title"; -constexpr char tokenKey[] = "token"; -constexpr char tokenModifiersKey[] = "tokenModifiers"; -constexpr char tokenTypesKey[] = "tokenTypes"; -constexpr char traceKey[] = "trace"; -constexpr char triggerCharacterKey[] = "triggerCharacter"; -constexpr char triggerCharactersKey[] = "triggerCharacters"; -constexpr char triggerKindKey[] = "triggerKind"; -constexpr char trimFinalNewlinesKey[] = "trimFinalNewlines"; -constexpr char trimTrailingWhitespaceKey[] = "trimTrailingWhitespace"; -constexpr char typeDefinitionKey[] = "typeDefinition"; -constexpr char typeDefinitionProviderKey[] = "typeDefinitionProvider"; -constexpr char typeKey[] = "type"; -constexpr char unregistrationsKey[] = "unregistrations"; -constexpr char uriKey[] = "uri"; -constexpr char valueKey[] = "value"; -constexpr char valueSetKey[] = "valueSet"; -constexpr char versionKey[] = "version"; -constexpr char willSaveKey[] = "willSave"; -constexpr char willSaveWaitUntilKey[] = "willSaveWaitUntil"; -constexpr char windowKey[] = "window"; -constexpr char workDoneProgressKey[] = "workDoneProgress"; -constexpr char workspaceEditKey[] = "workspaceEdit"; -constexpr char workspaceFoldersKey[] = "workspaceFolders"; -constexpr char workspaceKey[] = "workspace"; -constexpr char workspaceSymbolProviderKey[] = "workspaceSymbolProvider"; +constexpr char16_t actionsKey[] = u"actions"; +constexpr char16_t activeParameterKey[] = u"activeParameter"; +constexpr char16_t activeParameterSupportKey[] = u"activeParameterSupport"; +constexpr char16_t activeSignatureKey[] = u"activeSignature"; +constexpr char16_t addedKey[] = u"added"; +constexpr char16_t additionalTextEditsKey[] = u"additionalTextEdits"; +constexpr char16_t alphaKey[] = u"alpha"; +constexpr char16_t appliedKey[] = u"applied"; +constexpr char16_t applyEditKey[] = u"applyEdit"; +constexpr char16_t argumentsKey[] = u"arguments"; +constexpr char16_t blueKey[] = u"blue"; +constexpr char16_t cancellableKey[] = u"cancellable"; +constexpr char16_t capabilitiesKey[] = u"capabilities"; +constexpr char16_t chKey[] = u"ch"; +constexpr char16_t changeKey[] = u"change"; +constexpr char16_t changeNotificationsKey[] = u"changeNotifications"; +constexpr char16_t changesKey[] = u"changes"; +constexpr char16_t characterKey[] = u"character"; +constexpr char16_t childrenKey[] = u"children"; +constexpr char16_t clientInfoKey[] = u"clientInfo"; +constexpr char16_t codeActionKey[] = u"codeAction"; +constexpr char16_t codeActionKindKey[] = u"codeActionKind"; +constexpr char16_t codeActionKindsKey[] = u"codeActionKinds"; +constexpr char16_t codeActionLiteralSupportKey[] = u"codeActionLiteralSupport"; +constexpr char16_t codeActionProviderKey[] = u"codeActionProvider"; +constexpr char16_t codeKey[] = u"code"; +constexpr char16_t codeLensKey[] = u"codeLens"; +constexpr char16_t codeLensProviderKey[] = u"codeLensProvider"; +constexpr char16_t colorInfoKey[] = u"colorInfo"; +constexpr char16_t colorKey[] = u"color"; +constexpr char16_t colorProviderKey[] = u"colorProvider"; +constexpr char16_t commandKey[] = u"command"; +constexpr char16_t commandsKey[] = u"commands"; +constexpr char16_t commitCharacterSupportKey[] = u"commitCharacterSupport"; +constexpr char16_t commitCharactersKey[] = u"commitCharacters"; +constexpr char16_t completionItemKey[] = u"completionItem"; +constexpr char16_t completionItemKindKey[] = u"completionItemKind"; +constexpr char16_t completionKey[] = u"completion"; +constexpr char16_t completionProviderKey[] = u"completionProvider"; +constexpr char16_t configurationKey[] = u"configuration"; +constexpr char16_t containerNameKey[] = u"containerName"; +constexpr char16_t contentChangesKey[] = u"contentChanges"; +constexpr char16_t contentFormatKey[] = u"contentFormat"; +constexpr char16_t contentKey[] = u"value"; +constexpr char16_t contentsKey[] = u"contents"; +constexpr char16_t contextKey[] = u"context"; +constexpr char16_t contextSupportKey[] = u"contextSupport"; +constexpr char16_t dataKey[] = u"data"; +constexpr char16_t definitionKey[] = u"definition"; +constexpr char16_t definitionProviderKey[] = u"definitionProvider"; +constexpr char16_t deleteCountKey[] = u"deleteCount"; +constexpr char16_t deltaKey[] = u"delta"; +constexpr char16_t deprecatedKey[] = u"deprecated"; +constexpr char16_t detailKey[] = u"detail"; +constexpr char16_t diagnosticsKey[] = u"diagnostics"; +constexpr char16_t didChangeConfigurationKey[] = u"didChangeConfiguration"; +constexpr char16_t didChangeWatchedFilesKey[] = u"didChangeWatchedFiles"; +constexpr char16_t didSaveKey[] = u"didSave"; +constexpr char16_t documentChangesKey[] = u"documentChanges"; +constexpr char16_t documentFormattingProviderKey[] = u"documentFormattingProvider"; +constexpr char16_t documentHighlightKey[] = u"documentHighlight"; +constexpr char16_t documentHighlightProviderKey[] = u"documentHighlightProvider"; +constexpr char16_t documentLinkKey[] = u"documentLink"; +constexpr char16_t documentLinkProviderKey[] = u"documentLinkProvider"; +constexpr char16_t documentRangeFormattingProviderKey[] = u"documentRangeFormattingProvider"; +constexpr char16_t documentSelectorKey[] = u"documentSelector"; +constexpr char16_t documentSymbolKey[] = u"documentSymbol"; +constexpr char16_t documentSymbolProviderKey[] = u"documentSymbolProvider"; +constexpr char16_t documentationFormatKey[] = u"documentationFormat"; +constexpr char16_t documentationKey[] = u"documentation"; +constexpr char16_t dynamicRegistrationKey[] = u"dynamicRegistration"; +constexpr char16_t editKey[] = u"edit"; +constexpr char16_t editsKey[] = u"edits"; +constexpr char16_t endKey[] = u"end"; +constexpr char16_t errorKey[] = u"error"; +constexpr char16_t eventKey[] = u"event"; +constexpr char16_t executeCommandKey[] = u"executeCommand"; +constexpr char16_t executeCommandProviderKey[] = u"executeCommandProvider"; +constexpr char16_t experimentalKey[] = u"experimental"; +constexpr char16_t filterTextKey[] = u"filterText"; +constexpr char16_t firstTriggerCharacterKey[] = u"firstTriggerCharacter"; +constexpr char16_t formatsKey[] = u"formats"; +constexpr char16_t formattingKey[] = u"formatting"; +constexpr char16_t fullKey[] = u"full"; +constexpr char16_t greenKey[] = u"green"; +constexpr char16_t hierarchicalDocumentSymbolSupportKey[] = u"hierarchicalDocumentSymbolSupport"; +constexpr char16_t hoverKey[] = u"hover"; +constexpr char16_t hoverProviderKey[] = u"hoverProvider"; +constexpr char16_t idKey[] = u"id"; +constexpr char16_t implementationKey[] = u"implementation"; +constexpr char16_t implementationProviderKey[] = u"implementationProvider"; +constexpr char16_t includeDeclarationKey[] = u"includeDeclaration"; +constexpr char16_t includeTextKey[] = u"includeText"; +constexpr char16_t initializationOptionsKey[] = u"initializationOptions"; +constexpr char16_t insertFinalNewlineKey[] = u"insertFinalNewline"; +constexpr char16_t insertSpaceKey[] = u"insertSpace"; +constexpr char16_t insertTextFormatKey[] = u"insertTextFormat"; +constexpr char16_t insertTextKey[] = u"insertText"; +constexpr char16_t isIncompleteKey[] = u"isIncomplete"; +constexpr char16_t itemsKey[] = u"items"; +constexpr char16_t jsonRpcVersionKey[] = u"jsonrpc"; +constexpr char16_t kindKey[] = u"kind"; +constexpr char16_t labelKey[] = u"label"; +constexpr char16_t languageIdKey[] = u"languageId"; +constexpr char16_t languageKey[] = u"language"; +constexpr char16_t legendKey[] = u"legend"; +constexpr char16_t lineKey[] = u"line"; +constexpr char16_t linesKey[] = u"lines"; +constexpr char16_t locationKey[] = u"location"; +constexpr char16_t messageKey[] = u"message"; +constexpr char16_t methodKey[] = u"method"; +constexpr char16_t moreTriggerCharacterKey[] = u"moreTriggerCharacter"; +constexpr char16_t multiLineTokenSupportKey[] = u"multiLineTokenSupport"; +constexpr char16_t nameKey[] = u"name"; +constexpr char16_t newNameKey[] = u"newName"; +constexpr char16_t newTextKey[] = u"newText"; +constexpr char16_t onTypeFormattingKey[] = u"onTypeFormatting"; +constexpr char16_t onlyKey[] = u"only"; +constexpr char16_t openCloseKey[] = u"openClose"; +constexpr char16_t optionsKey[] = u"options"; +constexpr char16_t overlappingTokenSupportKey[] = u"overlappingTokenSupport"; +constexpr char16_t parametersKey[] = u"parameters"; +constexpr char16_t paramsKey[] = u"params"; +constexpr char16_t patternKey[] = u"pattern"; +constexpr char16_t percentageKey[] = u"percentage"; +constexpr char16_t placeHolderKey[] = u"placeHolder"; +constexpr char16_t positionKey[] = u"position"; +constexpr char16_t prepareProviderKey[] = u"prepareProvider"; +constexpr char16_t prepareSupportKey[] = u"prepareSupport"; +constexpr char16_t previousResultIdKey[] = u"previousResultId"; +constexpr char16_t processIdKey[] = u"processId"; +constexpr char16_t queryKey[] = u"query"; +constexpr char16_t rangeFormattingKey[] = u"rangeFormatting"; +constexpr char16_t rangeKey[] = u"range"; +constexpr char16_t rangeLengthKey[] = u"rangeLength"; +constexpr char16_t reasonKey[] = u"reason"; +constexpr char16_t redKey[] = u"red"; +constexpr char16_t referencesKey[] = u"references"; +constexpr char16_t referencesProviderKey[] = u"referencesProvider"; +constexpr char16_t refreshSupportKey[] = u"refreshSupport"; +constexpr char16_t registerOptionsKey[] = u"registerOptions"; +constexpr char16_t registrationsKey[] = u"registrations"; +constexpr char16_t removedKey[] = u"removed"; +constexpr char16_t renameKey[] = u"rename"; +constexpr char16_t renameProviderKey[] = u"renameProvider"; +constexpr char16_t requestsKey[] = u"requests"; +constexpr char16_t resolveProviderKey[] = u"resolveProvider"; +constexpr char16_t resultIdKey[] = u"resultId"; +constexpr char16_t resultKey[] = u"result"; +constexpr char16_t retryKey[] = u"retry"; +constexpr char16_t rootPathKey[] = u"rootPath"; +constexpr char16_t rootUriKey[] = u"rootUri"; +constexpr char16_t saveKey[] = u"save"; +constexpr char16_t schemeKey[] = u"scheme"; +constexpr char16_t scopeUriKey[] = u"scopeUri"; +constexpr char16_t sectionKey[] = u"section"; +constexpr char16_t selectionRangeKey[] = u"selectionRange"; +constexpr char16_t semanticTokensKey[] = u"semanticTokens"; +constexpr char16_t semanticTokensProviderKey[] = u"semanticTokensProvider"; +constexpr char16_t serverInfoKey[] = u"serverInfo"; +constexpr char16_t settingsKey[] = u"settings"; +constexpr char16_t severityKey[] = u"severity"; +constexpr char16_t signatureHelpKey[] = u"signatureHelp"; +constexpr char16_t signatureHelpProviderKey[] = u"signatureHelpProvider"; +constexpr char16_t signatureInformationKey[] = u"signatureInformation"; +constexpr char16_t signaturesKey[] = u"signatures"; +constexpr char16_t snippetSupportKey[] = u"snippetSupport"; +constexpr char16_t sortTextKey[] = u"sortText"; +constexpr char16_t sourceKey[] = u"source"; +constexpr char16_t startKey[] = u"start"; +constexpr char16_t supportedKey[] = u"supported"; +constexpr char16_t symbolKey[] = u"symbol"; +constexpr char16_t symbolKindKey[] = u"symbolKind"; +constexpr char16_t syncKindKey[] = u"syncKind"; +constexpr char16_t synchronizationKey[] = u"synchronization"; +constexpr char16_t tabSizeKey[] = u"tabSize"; +constexpr char16_t tagsKey[] = u"tags"; +constexpr char16_t targetKey[] = u"target"; +constexpr char16_t textDocumentKey[] = u"textDocument"; +constexpr char16_t textDocumentSyncKey[] = u"textDocumentSync"; +constexpr char16_t textEditKey[] = u"textEdit"; +constexpr char16_t textKey[] = u"text"; +constexpr char16_t titleKey[] = u"title"; +constexpr char16_t tokenKey[] = u"token"; +constexpr char16_t tokenModifiersKey[] = u"tokenModifiers"; +constexpr char16_t tokenTypesKey[] = u"tokenTypes"; +constexpr char16_t traceKey[] = u"trace"; +constexpr char16_t triggerCharacterKey[] = u"triggerCharacter"; +constexpr char16_t triggerCharactersKey[] = u"triggerCharacters"; +constexpr char16_t triggerKindKey[] = u"triggerKind"; +constexpr char16_t trimFinalNewlinesKey[] = u"trimFinalNewlines"; +constexpr char16_t trimTrailingWhitespaceKey[] = u"trimTrailingWhitespace"; +constexpr char16_t typeDefinitionKey[] = u"typeDefinition"; +constexpr char16_t typeDefinitionProviderKey[] = u"typeDefinitionProvider"; +constexpr char16_t typeKey[] = u"type"; +constexpr char16_t unregistrationsKey[] = u"unregistrations"; +constexpr char16_t uriKey[] = u"uri"; +constexpr char16_t valueKey[] = u"value"; +constexpr char16_t valueSetKey[] = u"valueSet"; +constexpr char16_t versionKey[] = u"version"; +constexpr char16_t willSaveKey[] = u"willSave"; +constexpr char16_t willSaveWaitUntilKey[] = u"willSaveWaitUntil"; +constexpr char16_t windowKey[] = u"window"; +constexpr char16_t workDoneProgressKey[] = u"workDoneProgress"; +constexpr char16_t workspaceEditKey[] = u"workspaceEdit"; +constexpr char16_t workspaceFoldersKey[] = u"workspaceFolders"; +constexpr char16_t workspaceKey[] = u"workspace"; +constexpr char16_t workspaceSymbolProviderKey[] = u"workspaceSymbolProvider"; } // namespace LanguageServerProtocol diff --git a/src/libs/languageserverprotocol/jsonobject.cpp b/src/libs/languageserverprotocol/jsonobject.cpp index 75edb76de3b..47d2bb7824c 100644 --- a/src/libs/languageserverprotocol/jsonobject.cpp +++ b/src/libs/languageserverprotocol/jsonobject.cpp @@ -37,12 +37,12 @@ JsonObject &JsonObject::operator=(JsonObject &&other) return *this; } -QJsonObject::iterator JsonObject::insert(const QString &key, const JsonObject &object) +QJsonObject::iterator JsonObject::insert(const QStringView key, const JsonObject &object) { return m_jsonObject.insert(key, object.m_jsonObject); } -QJsonObject::iterator JsonObject::insert(const QString &key, const QJsonValue &value) +QJsonObject::iterator JsonObject::insert(const QStringView key, const QJsonValue &value) { return m_jsonObject.insert(key, value); } diff --git a/src/libs/languageserverprotocol/jsonobject.h b/src/libs/languageserverprotocol/jsonobject.h index 9f27b478cd1..9dd172bbeff 100644 --- a/src/libs/languageserverprotocol/jsonobject.h +++ b/src/libs/languageserverprotocol/jsonobject.h @@ -67,88 +67,88 @@ public: const_iterator end() const { return m_jsonObject.end(); } protected: - iterator insert(const QString &key, const JsonObject &value); - iterator insert(const QString &key, const QJsonValue &value); + iterator insert(const QStringView key, const JsonObject &value); + iterator insert(const QStringView key, const QJsonValue &value); template - iterator insertVariant(const QString &key, const V &variant); + iterator insertVariant(const QStringView key, const V &variant); template - iterator insertVariant(const QString &key, const V &variant); + iterator insertVariant(const QStringView key, const V &variant); // QJSonObject redirections - QJsonValue value(const QString &key) const { return m_jsonObject.value(key); } - bool contains(const QString &key) const { return m_jsonObject.contains(key); } - iterator find(const QString &key) { return m_jsonObject.find(key); } - const_iterator find(const QString &key) const { return m_jsonObject.find(key); } - void remove(const QString &key) { m_jsonObject.remove(key); } + QJsonValue value(const QStringView key) const { return m_jsonObject.value(key); } + bool contains(const QStringView key) const { return m_jsonObject.contains(key); } + iterator find(const QStringView key) { return m_jsonObject.find(key); } + const_iterator find(const QStringView key) const { return m_jsonObject.find(key); } + void remove(const QStringView key) { m_jsonObject.remove(key); } QStringList keys() const { return m_jsonObject.keys(); } // convenience value access template - T typedValue(const QString &key) const; + T typedValue(const QStringView key) const; template - Utils::optional optionalValue(const QString &key) const; + Utils::optional optionalValue(const QStringView key) const; template - LanguageClientValue clientValue(const QString &key) const; + LanguageClientValue clientValue(const QStringView key) const; template - Utils::optional> optionalClientValue(const QString &key) const; + Utils::optional> optionalClientValue(const QStringView key) const; template - QList array(const QString &key) const; + QList array(const QStringView key) const; template - Utils::optional> optionalArray(const QString &key) const; + Utils::optional> optionalArray(const QStringView key) const; template - LanguageClientArray clientArray(const QString &key) const; + LanguageClientArray clientArray(const QStringView key) const; template - Utils::optional> optionalClientArray(const QString &key) const; + Utils::optional> optionalClientArray(const QStringView key) const; template - void insertArray(const QString &key, const QList &array); + void insertArray(const QStringView key, const QList &array); template - void insertArray(const QString &key, const QList &array); + void insertArray(const QStringView key, const QList &array); private: QJsonObject m_jsonObject; }; template -JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant) +JsonObject::iterator JsonObject::insertVariant(const QStringView key, const V &variant) { return Utils::holds_alternative(variant) ? insert(key, Utils::get(variant)) : end(); } template -JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant) +JsonObject::iterator JsonObject::insertVariant(const QStringView key, const V &variant) { auto result = insertVariant(key, variant); return result != end() ? result : insertVariant(key, variant); } template -T JsonObject::typedValue(const QString &key) const +T JsonObject::typedValue(const QStringView key) const { return fromJsonValue(value(key)); } template -Utils::optional JsonObject::optionalValue(const QString &key) const +Utils::optional JsonObject::optionalValue(const QStringView key) const { const QJsonValue &val = value(key); return val.isUndefined() ? Utils::nullopt : Utils::make_optional(fromJsonValue(val)); } template -LanguageClientValue JsonObject::clientValue(const QString &key) const +LanguageClientValue JsonObject::clientValue(const QStringView key) const { return LanguageClientValue(value(key)); } template -Utils::optional> JsonObject::optionalClientValue(const QString &key) const +Utils::optional> JsonObject::optionalClientValue(const QStringView key) const { return contains(key) ? Utils::make_optional(clientValue(key)) : Utils::nullopt; } template -QList JsonObject::array(const QString &key) const +QList JsonObject::array(const QStringView key) const { if (const Utils::optional> &array = optionalArray(key)) return *array; @@ -157,7 +157,7 @@ QList JsonObject::array(const QString &key) const } template -Utils::optional> JsonObject::optionalArray(const QString &key) const +Utils::optional> JsonObject::optionalArray(const QStringView key) const { const QJsonValue &jsonValue = value(key); if (jsonValue.isUndefined()) @@ -166,13 +166,13 @@ Utils::optional> JsonObject::optionalArray(const QString &key) const } template -LanguageClientArray JsonObject::clientArray(const QString &key) const +LanguageClientArray JsonObject::clientArray(const QStringView key) const { return LanguageClientArray(value(key)); } template -Utils::optional> JsonObject::optionalClientArray(const QString &key) const +Utils::optional> JsonObject::optionalClientArray(const QStringView key) const { const QJsonValue &val = value(key); return !val.isUndefined() ? Utils::make_optional(LanguageClientArray(value(key))) @@ -180,7 +180,7 @@ Utils::optional> JsonObject::optionalClientArray(const QS } template -void JsonObject::insertArray(const QString &key, const QList &array) +void JsonObject::insertArray(const QStringView key, const QList &array) { QJsonArray jsonArray; for (const T &item : array) @@ -189,7 +189,7 @@ void JsonObject::insertArray(const QString &key, const QList &array) } template -void JsonObject::insertArray(const QString &key, const QList &array) +void JsonObject::insertArray(const QStringView key, const QList &array) { QJsonArray jsonArray; for (const JsonObject &item : array) diff --git a/src/libs/languageserverprotocol/workspace.h b/src/libs/languageserverprotocol/workspace.h index 235ddbe9a59..6179cd70005 100644 --- a/src/libs/languageserverprotocol/workspace.h +++ b/src/libs/languageserverprotocol/workspace.h @@ -188,7 +188,7 @@ public: QString query() const { return typedValue(queryKey); } void setQuery(const QString &query) { insert(queryKey, query); } - void setLimit(int limit) { insert("limit", limit); } // clangd extension + void setLimit(int limit) { insert(u"limit", limit); } // clangd extension bool isValid() const override { return contains(queryKey); } }; diff --git a/src/plugins/clangcodemodel/clangdast.cpp b/src/plugins/clangcodemodel/clangdast.cpp index dbfaabea8c0..cc4f9708985 100644 --- a/src/plugins/clangcodemodel/clangdast.cpp +++ b/src/plugins/clangcodemodel/clangdast.cpp @@ -40,8 +40,8 @@ using namespace Utils; namespace ClangCodeModel::Internal { -static constexpr char roleKey[] = "role"; -static constexpr char arcanaKey[] = "arcana"; +static constexpr char16_t roleKey[] = u"role"; +static constexpr char16_t arcanaKey[] = u"arcana"; QString ClangdAstNode::role() const { return typedValue(roleKey); } QString ClangdAstNode::kind() const { return typedValue(kindKey); } diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 82b0944901e..9e828900a7c 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -217,7 +217,7 @@ class SymbolDetails : public JsonObject public: using JsonObject::JsonObject; - static constexpr char usrKey[] = "usr"; + static constexpr char16_t usrKey[] = u"usr"; // the unqualified name of the symbol QString name() const { return typedValue(nameKey); } @@ -341,8 +341,8 @@ class DiagnosticsCapabilities : public JsonObject { public: using JsonObject::JsonObject; - void enableCategorySupport() { insert("categorySupport", true); } - void enableCodeActionsInline() {insert("codeActionsInline", true);} + void enableCategorySupport() { insert(u"categorySupport", true); } + void enableCodeActionsInline() {insert(u"codeActionsInline", true);} }; class ClangdTextDocumentClientCapabilities : public TextDocumentClientCapabilities @@ -352,7 +352,7 @@ public: void setPublishDiagnostics(const DiagnosticsCapabilities &caps) - { insert("publishDiagnostics", caps); } + { insert(u"publishDiagnostics", caps); } }; @@ -674,7 +674,7 @@ public: explicit ClangdCompletionCapabilities(const JsonObject &object) : TextDocumentClientCapabilities::CompletionCapabilities(object) { - insert("editsNearCursor", true); // For dot-to-arrow correction. + insert(u"editsNearCursor", true); // For dot-to-arrow correction. if (Utils::optional completionItemCaps = completionItem()) { completionItemCaps->setSnippetSupport(false); setCompletionItem(*completionItemCaps); @@ -2176,7 +2176,7 @@ void ClangdClient::Private::handleSemanticTokens(TextDocument *doc, Utils::optional > ClangdDiagnostic::codeActions() const { - auto actions = optionalArray("codeActions"); + auto actions = optionalArray(u"codeActions"); if (!actions) return actions; static const QStringList badCodeActions{ @@ -2193,7 +2193,7 @@ Utils::optional > ClangdDiagnostic::codeActions() const QString ClangdDiagnostic::category() const { - return typedValue("category"); + return typedValue(u"category"); } class ClangdClient::ClangdFunctionHintProcessor : public FunctionHintProcessor diff --git a/src/plugins/coco/cocolanguageclient.cpp b/src/plugins/coco/cocolanguageclient.cpp index 45cb39e9f74..c26bd83bc45 100644 --- a/src/plugins/coco/cocolanguageclient.cpp +++ b/src/plugins/coco/cocolanguageclient.cpp @@ -260,7 +260,7 @@ public: void enableCodecoverageSupport() { JsonObject coverageSupport(QJsonObject{{"codeCoverageSupport", true}}); - insert("publishDiagnostics", coverageSupport); + insert(u"publishDiagnostics", coverageSupport); } }; diff --git a/src/plugins/languageclient/lspinspector.cpp b/src/plugins/languageclient/lspinspector.cpp index 97ef86b3316..051e168f263 100644 --- a/src/plugins/languageclient/lspinspector.cpp +++ b/src/plugins/languageclient/lspinspector.cpp @@ -549,7 +549,7 @@ QString LspLogMessage::displayText() const if (!m_displayText.has_value()) { m_displayText = QString(time.toString("hh:mm:ss.zzz") + '\n'); m_displayText->append( - message.toJsonObject().value(QString{methodKey}).toString(id().toString())); + message.toJsonObject().value(methodKey).toString(id().toString())); } return *m_displayText; } From f7a087ce7a5c9b868af35a362c498f5b68931767 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 4 Aug 2022 13:09:32 +0200 Subject: [PATCH 13/14] QmlPuppet: Compile fix Change-Id: I4ff0fd46d8e0f2c00857de2b8f6d99a502d2675f Reviewed-by: Qt CI Bot Reviewed-by: hjk --- .../qml2puppet/instances/qt5informationnodeinstanceserver.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index c95a81641e0..516213588c4 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -101,6 +101,7 @@ #include #include #include +#include #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #include "../editor3d/qt5compat/qquick3darealight_p.h" #endif From 5d85c4dbdf2e62d5188831c8ef082cf2a009a090 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 4 Aug 2022 14:56:41 +0200 Subject: [PATCH 14/14] ClangCodeModel: fix diagnostic settings link Link the diagnostic configuration action of a tooltip against the clangd code model settings page. Change-Id: I367bda11f1d360ef4a0b686229c7466678cbb803 Reviewed-by: Christian Kandeler --- src/plugins/clangcodemodel/clangtextmark.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index 94ad1c82f86..1de16f9914d 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -294,7 +294,7 @@ ClangdTextMark::ClangdTextMark(const FilePath &filePath, , m_diagnostic(convertDiagnostic(ClangdDiagnostic(diagnostic), filePath)) , m_client(client) { - setSettingsPage(CppEditor::Constants::CPP_CODE_MODEL_SETTINGS_ID); + setSettingsPage(CppEditor::Constants::CPP_CLANGD_SETTINGS_ID); const bool isError = diagnostic.severity() && *diagnostic.severity() == DiagnosticSeverity::Error;