From 7f21e8b29f68d7123d6ce94018aef5d8abc0319f Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Tue, 28 Jan 2014 22:37:46 +0200
Subject: [PATCH] VCS: Do not wrap lines that start with tab in submit editor

This breaks "Conflicts" section in Git, and possibly others

Change-Id: I821fd147194af0ce3902cedad02f373d6892e665
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 src/plugins/vcsbase/submiteditorwidget.cpp | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/plugins/vcsbase/submiteditorwidget.cpp b/src/plugins/vcsbase/submiteditorwidget.cpp
index da3745dfbc3..23c05af0779 100644
--- a/src/plugins/vcsbase/submiteditorwidget.cpp
+++ b/src/plugins/vcsbase/submiteditorwidget.cpp
@@ -34,6 +34,7 @@
 
 #include <QDebug>
 #include <QPointer>
+#include <QTextBlock>
 #include <QTimer>
 #include <QScopedPointer>
 
@@ -299,11 +300,21 @@ static QString wrappedText(const QTextEdit *e)
     QTextCursor cursor(e->document());
     cursor.movePosition(QTextCursor::Start);
     while (!cursor.atEnd()) {
-        cursor.select(QTextCursor::LineUnderCursor);
-        rc += cursor.selectedText();
-        rc += newLine;
-        cursor.movePosition(QTextCursor::EndOfLine); // Mac needs it
-        cursor.movePosition(QTextCursor::NextCharacter);
+        const QString block = cursor.block().text();
+        if (block.startsWith(QLatin1Char('\t'))) { // Don't wrap
+            rc += block + newLine;
+        } else {
+            forever {
+                cursor.select(QTextCursor::LineUnderCursor);
+                rc += cursor.selectedText();
+                rc += newLine;
+                cursor.movePosition(QTextCursor::EndOfLine); // Mac needs it
+                if (cursor.atBlockEnd())
+                    break;
+                cursor.movePosition(QTextCursor::NextCharacter);
+            }
+        }
+        cursor.movePosition(QTextCursor::NextBlock);
     }
     return rc;
 }
-- 
GitLab