diff --git a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp
index f593074d2dd95fc9cd2be84cf8acc2f988b383e3..75635d2f2b13c1e7b5295885e53addc768e9cbb5 100644
--- a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp
+++ b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp
@@ -88,6 +88,17 @@ protected:
         return GenericProposalWidget::eventFilter(o, e);
     }
 
+    void showProposal(const QString &prefix)
+    {
+        IGenericProposalModel *proposalModel = model();
+        if (proposalModel && proposalModel->size() == 1) {
+            emit proposalItemActivated(proposalModel->proposalItem(0));
+            deleteLater();
+            return;
+        }
+        GenericProposalWidget::showProposal(prefix);
+    }
+
 private:
     QKeySequence m_sequence;
 };
diff --git a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
index bf096098e8f7896ecae3542dabc51a00723f5d9e..839e26f31d96accb38bb85c30aea199b75ea8d62 100644
--- a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
+++ b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
@@ -666,6 +666,11 @@ bool GenericProposalWidget::activateCurrentProposalItem()
     return false;
 }
 
+IGenericProposalModel *GenericProposalWidget::model()
+{
+    return d->m_model;
+}
+
 #include "genericproposalwidget.moc"
 
 } // TextEditor
diff --git a/src/plugins/texteditor/codeassist/genericproposalwidget.h b/src/plugins/texteditor/codeassist/genericproposalwidget.h
index 6d5b584a788545717d6b32d8ce779cf3cdad55c2..1fb9ce276f272b4d34216d060e8e8a1ad3d21134 100644
--- a/src/plugins/texteditor/codeassist/genericproposalwidget.h
+++ b/src/plugins/texteditor/codeassist/genericproposalwidget.h
@@ -37,6 +37,7 @@
 namespace TextEditor {
 
 class GenericProposalWidgetPrivate;
+class IGenericProposalModel;
 
 class TEXTEDITOR_EXPORT GenericProposalWidget : public IAssistProposalWidget
 {
@@ -72,6 +73,7 @@ private slots:
 protected:
     bool eventFilter(QObject *o, QEvent *e);
     bool activateCurrentProposalItem();
+    IGenericProposalModel *model();
 
 private:
     GenericProposalWidgetPrivate *d;