diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index c6b860234e3..5046a8c9a21 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -1276,7 +1276,7 @@ QString CPPEditor::autoComplete(QTextCursor &cursor, const QString &textToInsert const bool checkBlockEnd = m_allowSkippingOfBlockEnd; m_allowSkippingOfBlockEnd = false; // consume blockEnd. - if (!contextAllowsAutoParentheses(cursor)) + if (!contextAllowsAutoParentheses(cursor, textToInsert)) return QString(); QString text = textToInsert; @@ -1374,9 +1374,14 @@ int CPPEditor::paragraphSeparatorAboutToBeInserted(QTextCursor &cursor) return 0; } -bool CPPEditor::contextAllowsAutoParentheses(const QTextCursor &cursor) const +bool CPPEditor::contextAllowsAutoParentheses(const QTextCursor &cursor, + const QString &textToInsert) const { - if (! MatchingText::shouldInsertMatchingText(cursor)) + QChar ch; + if (! textToInsert.isEmpty()) + ch = textToInsert.at(0); + + if (! (MatchingText::shouldInsertMatchingText(cursor) || ch == QLatin1Char('\'') || ch == QLatin1Char('"'))) return false; CPlusPlus::TokenUnderCursor tokenUnderCursor; diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 90c39a1ab72..aac771b2052 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -217,7 +217,8 @@ protected: bool autoBackspace(QTextCursor &cursor); int paragraphSeparatorAboutToBeInserted(QTextCursor &cursor); - bool contextAllowsAutoParentheses(const QTextCursor &cursor) const; + bool contextAllowsAutoParentheses(const QTextCursor &cursor, + const QString &textToInsert = QString()) const; private Q_SLOTS: void updateFileName();