diff --git a/src/plugins/cpptools/completionsettingspage.cpp b/src/plugins/cpptools/completionsettingspage.cpp
index ad7fa77e739f523a1fa1524e208a01db19055041..45cf7f8d06625bcf0e175550138260cb50043855 100644
--- a/src/plugins/cpptools/completionsettingspage.cpp
+++ b/src/plugins/cpptools/completionsettingspage.cpp
@@ -69,6 +69,7 @@ QWidget *CompletionSettingsPage::createPage(QWidget *parent)
 
     m_page->caseSensitive->setChecked(m_completion->caseSensitivity() == Qt::CaseSensitive);
     m_page->autoInsertBraces->setChecked(m_completion->autoInsertBraces());
+    m_page->partiallyComplete->setChecked(m_completion->isPartialCompletionEnabled());
 
     return w;
 }
@@ -79,6 +80,7 @@ void CompletionSettingsPage::finished(bool accepted)
         m_completion->setCaseSensitivity(
                 m_page->caseSensitive->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive);
         m_completion->setAutoInsertBraces(m_page->autoInsertBraces->isChecked());
+        m_completion->setPartialCompletionEnabled(m_page->partiallyComplete->isChecked());
     }
 
     delete m_page;
diff --git a/src/plugins/cpptools/completionsettingspage.ui b/src/plugins/cpptools/completionsettingspage.ui
index 10e4273f4d64afee36f181c0033c2c9a3810ed7c..372c225943f49146915140cd5dfa38950669be6c 100644
--- a/src/plugins/cpptools/completionsettingspage.ui
+++ b/src/plugins/cpptools/completionsettingspage.ui
@@ -17,7 +17,7 @@
    <item>
     <widget class="QCheckBox" name="caseSensitive">
      <property name="text">
-      <string>Match completions &amp;case-sensitive</string>
+      <string>&amp;Case-sensitive completion</string>
      </property>
      <property name="checked">
       <bool>true</bool>
@@ -34,6 +34,16 @@
      </property>
     </widget>
    </item>
+   <item>
+    <widget class="QCheckBox" name="partiallyComplete">
+     <property name="text">
+      <string>Autocomplete common &amp;prefix</string>
+     </property>
+     <property name="checked">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
    <item>
     <spacer name="verticalSpacer">
      <property name="orientation">
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index c7cd3f07a919676e4691cc81a654e4ae0073ad34..09d950a3057120a9b63744330d6b72f9878bfab7 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -346,6 +346,16 @@ void CppCodeCompletion::setAutoInsertBraces(bool autoInsertBraces)
     m_autoInsertBraces = autoInsertBraces;
 }
 
+bool CppCodeCompletion::isPartialCompletionEnabled() const
+{
+    return m_partialCompletionEnabled;
+}
+
+void CppCodeCompletion::setPartialCompletionEnabled(bool partialCompletionEnabled)
+{
+    m_partialCompletionEnabled = partialCompletionEnabled;
+}
+
 /*
   Searches beckward for an access operator.
 */
@@ -1030,7 +1040,7 @@ bool CppCodeCompletion::partiallyComplete(const QList<TextEditor::CompletionItem
     } else if (completionItems.count() == 1) {
         complete(completionItems.first());
         return true;
-    } else if (m_completionOperator != T_LPAREN) {
+    } else if (m_partialCompletionEnabled && m_completionOperator != T_LPAREN) {
         // Compute common prefix
         QString firstKey = completionItems.first().m_text;
         QString lastKey = completionItems.last().m_text;
diff --git a/src/plugins/cpptools/cppcodecompletion.h b/src/plugins/cpptools/cppcodecompletion.h
index 87f84fffff1b1b890b33382399bfd1f53dd7d161..57f9983e0c4789625b78a14be245b57594ae7d8b 100644
--- a/src/plugins/cpptools/cppcodecompletion.h
+++ b/src/plugins/cpptools/cppcodecompletion.h
@@ -84,6 +84,9 @@ public:
     bool autoInsertBraces() const;
     void setAutoInsertBraces(bool autoInsertBraces);
 
+    bool isPartialCompletionEnabled() const;
+    void setPartialCompletionEnabled(bool partialCompletionEnabled);
+
 private:
     void addKeywords();
     void addMacros(const CPlusPlus::LookupContext &context);
@@ -134,6 +137,7 @@ private:
     CppModelManager *m_manager;
     Qt::CaseSensitivity m_caseSensitivity;
     bool m_autoInsertBraces;
+    bool m_partialCompletionEnabled;
 
     bool m_forcedCompletion;
 
diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp
index 9d190162c82d0bc6a4a9432b99dbf24aa77ad8cc..764fc250b07495e4f4e2b6662e3930d7d4c5958d 100644
--- a/src/plugins/cpptools/cpptoolsplugin.cpp
+++ b/src/plugins/cpptools/cpptoolsplugin.cpp
@@ -120,6 +120,7 @@ bool CppToolsPlugin::initialize(const QStringList & /*arguments*/, QString *)
     const bool caseSensitive = settings->value(QLatin1String("CaseSensitive"), true).toBool();
     m_completion->setCaseSensitivity(caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive);
     m_completion->setAutoInsertBraces(settings->value(QLatin1String("AutoInsertBraces"), true).toBool());
+    m_completion->setPartialCompletionEnabled(settings->value(QLatin1String("PartiallyComplete"), true).toBool());
     settings->endGroup();
     settings->endGroup();
 
@@ -138,6 +139,7 @@ void CppToolsPlugin::shutdown()
     settings->beginGroup(QLatin1String("Completion"));
     settings->setValue(QLatin1String("CaseSensitive"), m_completion->caseSensitivity() == Qt::CaseSensitive);
     settings->setValue(QLatin1String("AutoInsertBraces"), m_completion->autoInsertBraces());
+    settings->setValue(QLatin1String("PartiallyComplete"), m_completion->isPartialCompletionEnabled());
     settings->endGroup();
     settings->endGroup();
 }