From fb82e101eaf183bd923d03fd976f6d06512af515 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com>
Date: Fri, 19 Mar 2010 16:23:10 +0100
Subject: [PATCH] Handle forward/backward mouse buttons for editor navigation

Task-number: QTCREATORBUG-899
Reviewed-by: kh1
---
 src/plugins/texteditor/basetexteditor.cpp | 25 +++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 5ec6f11ffad..a3537d03af7 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -3389,6 +3389,20 @@ void BaseTextEditor::mouseMoveEvent(QMouseEvent *e)
         viewport()->setCursor(Qt::IBeamCursor);
 }
 
+static bool handleForwardBackwardMouseButtons(QMouseEvent *e)
+{
+    if (e->button() == Qt::XButton1) {
+        Core::EditorManager::instance()->goBackInNavigationHistory();
+        return true;
+    }
+    if (e->button() == Qt::XButton2) {
+        Core::EditorManager::instance()->goForwardInNavigationHistory();
+        return true;
+    }
+
+    return false;
+}
+
 void BaseTextEditor::mousePressEvent(QMouseEvent *e)
 {
     if (e->button() == Qt::LeftButton) {
@@ -3405,6 +3419,12 @@ void BaseTextEditor::mousePressEvent(QMouseEvent *e)
         if (d->m_currentLink.isValid())
             d->m_linkPressed = true;
     }
+
+#ifdef Q_OS_LINUX
+    if (handleForwardBackwardMouseButtons(e))
+        return;
+#endif
+
     QPlainTextEdit::mousePressEvent(e);
 }
 
@@ -3423,6 +3443,11 @@ void BaseTextEditor::mouseReleaseEvent(QMouseEvent *e)
         }
     }
 
+#ifndef Q_OS_LINUX
+    if (handleForwardBackwardMouseButtons(e))
+        return;
+#endif
+
     QPlainTextEdit::mouseReleaseEvent(e);
 }
 
-- 
GitLab