From cf44cbf58ecf15b5e03d4012ad9aabc794f64c57 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com>
Date: Wed, 13 May 2009 16:05:11 +0200
Subject: [PATCH] Added an option to disable the mouse navigation

It's conflicting too much with pasting for some, so better have the
option to just turn it off.
---
 src/plugins/cppeditor/cppeditor.cpp           |  8 +++++++-
 src/plugins/cppeditor/cppeditor.h             |  5 ++++-
 .../texteditor/behaviorsettingspage.cpp       |  2 +-
 src/plugins/texteditor/displaysettings.cpp    |  7 ++++++-
 src/plugins/texteditor/displaysettings.h      |  1 +
 .../texteditor/displaysettingspage.cpp        |  4 +++-
 src/plugins/texteditor/displaysettingspage.ui | 20 +++++++++++++++++--
 7 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index c746aead411..3d553ea4acc 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 bd76281894f..526faff87a7 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 1ff95ca1482..724da5a9e16 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 b0273a2c887..a9aabe79963 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 06a7d0fa381..bcbb18462ea 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 ec7ae6a2210..8cd42c52992 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 d040a94b899..c1e984389c3 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/>
-- 
GitLab