diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index c746aead41158f503b5f62a77ee34ddaf1767106..3d553ea4acca7649ee4eeed3570ba51122cc69e2 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -189,6 +189,7 @@ CPPEditorEditable::CPPEditorEditable(CPPEditor *editor)
 
 CPPEditor::CPPEditor(QWidget *parent)
     : TextEditor::BaseTextEditor(parent)
+    , m_mouseNavigationEnabled(true)
     , m_showingLink(false)
 {
     setParenthesesMatchingEnabled(true);
@@ -901,7 +902,7 @@ void CPPEditor::mouseMoveEvent(QMouseEvent *e)
 {
     bool linkFound = false;
 
-    if (e->modifiers() & Qt::ControlModifier) {
+    if (m_mouseNavigationEnabled && e->modifiers() & Qt::ControlModifier) {
         // Link emulation behaviour for 'go to definition'
         const QTextCursor cursor = cursorForPosition(e->pos());
 
@@ -1027,6 +1028,11 @@ void CPPEditor::setFontSettings(const TextEditor::FontSettings &fs)
     m_linkFormat = fs.toTextCharFormat(QLatin1String(TextEditor::Constants::C_LINK));
 }
 
+void CPPEditor::setDisplaySettings(const TextEditor::DisplaySettings &ds)
+{
+    TextEditor::BaseTextEditor::setDisplaySettings(ds);
+    m_mouseNavigationEnabled = ds.m_mouseNavigation;
+}
 
 void CPPEditor::unCommentSelection()
 {
diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h
index bd76281894f4b25d2cc1bdbf29595170b0aff3cb..526faff87a7e01f7bd36f0073164a97bb7b6816f 100644
--- a/src/plugins/cppeditor/cppeditor.h
+++ b/src/plugins/cppeditor/cppeditor.h
@@ -87,6 +87,7 @@ public:
 
 public slots:
     virtual void setFontSettings(const TextEditor::FontSettings &);
+    virtual void setDisplaySettings(const TextEditor::DisplaySettings &);
     void setSortedMethodOverview(bool sort);
     void switchDeclarationDefinition();
     void jumpToDefinition();
@@ -153,11 +154,13 @@ private:
 
     void showLink(const Link &);
     void clearLink();
-    bool m_showingLink;
 
     Link findLinkAt(const QTextCursor &, bool lookupDefinition = true);
     static Link linkToSymbol(CPlusPlus::Symbol *symbol);
     bool openCppEditorAt(const Link &);
+
+    bool m_mouseNavigationEnabled;
+    bool m_showingLink;
     QTextCharFormat m_linkFormat;
 
     CppTools::CppModelManagerInterface *m_modelManager;
diff --git a/src/plugins/texteditor/behaviorsettingspage.cpp b/src/plugins/texteditor/behaviorsettingspage.cpp
index 1ff95ca1482e1e5f90cc53949735e71f264b05a5..724da5a9e166abe8dad4ce20d4a48cfb7e81869e 100644
--- a/src/plugins/texteditor/behaviorsettingspage.cpp
+++ b/src/plugins/texteditor/behaviorsettingspage.cpp
@@ -126,7 +126,7 @@ void BehaviorSettingsPage::apply()
 }
 
 void BehaviorSettingsPage::settingsFromUI(TabSettings &tabSettings,
-                                         StorageSettings &storageSettings) const
+                                          StorageSettings &storageSettings) const
 {
     tabSettings.m_spacesForTabs = m_d->m_page.insertSpaces->isChecked();
     tabSettings.m_autoIndent = m_d->m_page.autoIndent->isChecked();
diff --git a/src/plugins/texteditor/displaysettings.cpp b/src/plugins/texteditor/displaysettings.cpp
index b0273a2c887a264124f1a016dabb080cce93490e..a9aabe7996340b6fec0e892bb9813d331bf3a1b0 100644
--- a/src/plugins/texteditor/displaysettings.cpp
+++ b/src/plugins/texteditor/displaysettings.cpp
@@ -43,6 +43,7 @@ static const char * const displayFoldingMarkersKey = "DisplayFoldingMarkers";
 static const char * const highlightCurrentLineKey = "HighlightCurrentLineKeyV2";
 static const char * const highlightBlocksKey = "HighlightBlocksKey";
 static const char * const animateMatchingParenthesesKey= "AnimateMatchingParenthesesKey";
+static const char * const mouseNavigationKey = "MouseNavigation";
 static const char * const groupPostfix = "DisplaySettings";
 
 namespace TextEditor {
@@ -56,7 +57,8 @@ DisplaySettings::DisplaySettings() :
     m_displayFoldingMarkers(true),
     m_highlightCurrentLine(false),
     m_highlightBlocks(false),
-    m_animateMatchingParentheses(true)
+    m_animateMatchingParentheses(true),
+    m_mouseNavigation(true)
 {
 }
 
@@ -75,6 +77,7 @@ void DisplaySettings::toSettings(const QString &category, QSettings *s) const
     s->setValue(QLatin1String(highlightCurrentLineKey), m_highlightCurrentLine);
     s->setValue(QLatin1String(highlightBlocksKey), m_highlightBlocks);
     s->setValue(QLatin1String(animateMatchingParenthesesKey), m_animateMatchingParentheses);
+    s->setValue(QLatin1String(mouseNavigationKey), m_mouseNavigation);
     s->endGroup();
 }
 
@@ -96,6 +99,7 @@ void DisplaySettings::fromSettings(const QString &category, const QSettings *s)
     m_highlightCurrentLine = s->value(group + QLatin1String(highlightCurrentLineKey), m_highlightCurrentLine).toBool();
     m_highlightBlocks = s->value(group + QLatin1String(highlightBlocksKey), m_highlightBlocks).toBool();
     m_animateMatchingParentheses = s->value(group + QLatin1String(animateMatchingParenthesesKey), m_animateMatchingParentheses).toBool();
+    m_mouseNavigation = s->value(group + QLatin1String(mouseNavigationKey), m_mouseNavigation).toBool();
 }
 
 bool DisplaySettings::equals(const DisplaySettings &ds) const
@@ -109,6 +113,7 @@ bool DisplaySettings::equals(const DisplaySettings &ds) const
         && m_highlightCurrentLine == ds.m_highlightCurrentLine
         && m_highlightBlocks == ds.m_highlightBlocks
         && m_animateMatchingParentheses == ds.m_animateMatchingParentheses
+        && m_mouseNavigation == ds.m_mouseNavigation
         ;
 }
 
diff --git a/src/plugins/texteditor/displaysettings.h b/src/plugins/texteditor/displaysettings.h
index 06a7d0fa381381458aba1f1780c490cdf49c6fa2..bcbb18462ea03364c0a1118c6a058e2d4666c4d0 100644
--- a/src/plugins/texteditor/displaysettings.h
+++ b/src/plugins/texteditor/displaysettings.h
@@ -54,6 +54,7 @@ struct TEXTEDITOR_EXPORT DisplaySettings
     bool m_highlightCurrentLine;
     bool m_highlightBlocks;
     bool m_animateMatchingParentheses;
+    bool m_mouseNavigation;
 
     bool equals(const DisplaySettings &ds) const;
 };
diff --git a/src/plugins/texteditor/displaysettingspage.cpp b/src/plugins/texteditor/displaysettingspage.cpp
index ec7ae6a221093855a563e6512a92181ec4a3c2ce..8cd42c5299253a80c2d437283099514b54a8dff8 100644
--- a/src/plugins/texteditor/displaysettingspage.cpp
+++ b/src/plugins/texteditor/displaysettingspage.cpp
@@ -123,7 +123,8 @@ void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings) const
     displaySettings.m_displayFoldingMarkers = m_d->m_page.displayFoldingMarkers->isChecked();
     displaySettings.m_highlightCurrentLine = m_d->m_page.highlightCurrentLine->isChecked();
     displaySettings.m_highlightBlocks = m_d->m_page.highlightBlocks->isChecked();
-    displaySettings.m_animateMatchingParentheses= m_d->m_page.animateMatchingParentheses->isChecked();
+    displaySettings.m_animateMatchingParentheses = m_d->m_page.animateMatchingParentheses->isChecked();
+    displaySettings.m_mouseNavigation = m_d->m_page.mouseNavigation->isChecked();
 }
 
 void DisplaySettingsPage::settingsToUI()
@@ -138,6 +139,7 @@ void DisplaySettingsPage::settingsToUI()
     m_d->m_page.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
     m_d->m_page.highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
     m_d->m_page.animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
+    m_d->m_page.mouseNavigation->setChecked(displaySettings.m_mouseNavigation);
 }
 
 DisplaySettings DisplaySettingsPage::displaySettings() const
diff --git a/src/plugins/texteditor/displaysettingspage.ui b/src/plugins/texteditor/displaysettingspage.ui
index d040a94b89958b8259a113eed0cea907268c7e5a..c1e984389c3f570974a2ec70e64d770861f2911d 100644
--- a/src/plugins/texteditor/displaysettingspage.ui
+++ b/src/plugins/texteditor/displaysettingspage.ui
@@ -7,11 +7,11 @@
     <x>0</x>
     <y>0</y>
     <width>381</width>
-    <height>335</height>
+    <height>402</height>
    </rect>
   </property>
   <layout class="QGridLayout" name="gridLayout_3">
-   <item row="2" column="0">
+   <item row="3" column="0">
     <spacer name="verticalSpacer">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
@@ -128,6 +128,22 @@
      </layout>
     </widget>
    </item>
+   <item row="2" column="0">
+    <widget class="QGroupBox" name="groupBoxNavigation">
+     <property name="title">
+      <string>Navigation</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_2">
+      <item>
+       <widget class="QCheckBox" name="mouseNavigation">
+        <property name="text">
+         <string>Enable &amp;mouse navigation</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
   </layout>
  </widget>
  <resources/>