From d087d0b66ec1b865a393730a84b7534dde26820a Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Sun, 16 Feb 2014 22:05:23 +0200
Subject: [PATCH] CppEditor: Jump directly to single virtual function

Assumption: model never has 1 entry for immediate result
(there is always the natural result + "Searching for overrides"

Change-Id: I5de7e7933b1309f995a6111a2ab1c7aed31c086e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
---
 .../cppeditor/cppvirtualfunctionassistprovider.cpp    | 11 +++++++++++
 .../texteditor/codeassist/genericproposalwidget.cpp   |  5 +++++
 .../texteditor/codeassist/genericproposalwidget.h     |  2 ++
 3 files changed, 18 insertions(+)

diff --git a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp
index f593074d2dd..75635d2f2b1 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 bf096098e8f..839e26f31d9 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 6d5b584a788..1fb9ce276f2 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;
-- 
GitLab