From 98499e7caa4bf9d937cbe5a1c10c823a8402327a Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 30 Oct 2020 16:53:10 +0100 Subject: [PATCH] CppEditor: Do not offer generated QObject functions ... in "create implementations" quickfix. Change-Id: Ie8aa00e432afdf1338d4897ad211c15fef753404 Reviewed-by: Christian Stenger --- src/plugins/cppeditor/cppinsertvirtualmethods.cpp | 14 +++++--------- src/plugins/cppeditor/cppquickfix.cpp | 15 +++++++++++++-- src/plugins/cppeditor/cppquickfix.h | 8 +++++++- src/plugins/cppeditor/cppquickfixes.cpp | 4 ++++ 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp index 209ad213a92..438196f3fdd 100644 --- a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp +++ b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp @@ -610,15 +610,11 @@ public: // - virtual int qt_metacall(QMetaObject::Call, int, void **); bool skip = false; for (const Function *firstVirtual : qAsConst(firstVirtuals)) { - if (printer.prettyName(firstVirtual->enclosingClass()->name()) - == QLatin1String("QObject")) { - const QString funcName = printer.prettyName(func->name()); - if (funcName == QLatin1String("metaObject") - || funcName == QLatin1String("qt_metacast") - || funcName == QLatin1String("qt_metacall")) { - skip = true; - break; - } + if (printer.prettyName(firstVirtual->enclosingClass()->name()) == "QObject" + && magicQObjectFunctions().contains( + printer.prettyName(func->name()))) { + skip = true; + break; } } if (skip) diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp index a22b85f5e40..2080f178497 100644 --- a/src/plugins/cppeditor/cppquickfix.cpp +++ b/src/plugins/cppeditor/cppquickfix.cpp @@ -29,14 +29,25 @@ #include -using namespace CppEditor; -using namespace CppEditor::Internal; using namespace CppTools; using namespace TextEditor; using namespace CPlusPlus; +namespace CppEditor { +namespace Internal { + +const QStringList magicQObjectFunctions() +{ + static QStringList list{"metaObject", "qt_metacast", "qt_metacall", "qt_static_metacall"}; + return list; +} + +} // namespace Internal + CppQuickFixOperation::CppQuickFixOperation(const CppQuickFixInterface &interface, int priority) : QuickFixOperation(priority), CppQuickFixInterface(interface) {} CppQuickFixOperation::~CppQuickFixOperation() = default; + +} // namespace CppEditor diff --git a/src/plugins/cppeditor/cppquickfix.h b/src/plugins/cppeditor/cppquickfix.h index 3fe054f8a04..516b7c30456 100644 --- a/src/plugins/cppeditor/cppquickfix.h +++ b/src/plugins/cppeditor/cppquickfix.h @@ -31,7 +31,13 @@ #include namespace CppEditor { -namespace Internal { class CppQuickFixInterface; } +namespace Internal { +class CppQuickFixInterface; + +// These are generated functions that should not be offered in quickfixes. +const QStringList magicQObjectFunctions(); + +} class CPPEDITOR_EXPORT CppQuickFixOperation : public TextEditor::QuickFixOperation, diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index 9d1fa2e03e4..4e39cecebce 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -3496,6 +3496,10 @@ public: Function * const func = s->type()->asFunctionType(); if (!func || func->isSignal() || func->isFriend()) continue; + Overview oo = CppCodeStyleSettings::currentProjectCodeStyleOverview(); + oo.showFunctionSignatures = true; + if (magicQObjectFunctions().contains(oo.prettyName(func->name()))) + continue; m_declarations << s; } }