From 129b53f616e9e4437811c7a12e22c1af80f0baaa Mon Sep 17 00:00:00 2001
From: Leandro Melo <leandro.melo@nokia.com>
Date: Thu, 30 Sep 2010 09:12:59 +0200
Subject: [PATCH] Profile editor: Add proper format to white spaces.

The generic highlighter already provided a method for this.
This method was then lifted to the base syntax highlighter
and it is now used by the profile highlighter.

Reviewed-by: Roberto Raggi
Task-number: QTCREATORBUG-2448
---
 .../qt4projectmanager/profileeditor.cpp        |  3 ++-
 .../qt4projectmanager/profilehighlighter.cpp   |  3 ++-
 .../qt4projectmanager/profilehighlighter.h     |  1 +
 .../generichighlighter/highlighter.cpp         | 18 +-----------------
 .../generichighlighter/highlighter.h           |  1 -
 src/plugins/texteditor/syntaxhighlighter.cpp   | 16 ++++++++++++++++
 src/plugins/texteditor/syntaxhighlighter.h     |  2 ++
 7 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/src/plugins/qt4projectmanager/profileeditor.cpp b/src/plugins/qt4projectmanager/profileeditor.cpp
index 8b79faf1836..d7cf57278af 100644
--- a/src/plugins/qt4projectmanager/profileeditor.cpp
+++ b/src/plugins/qt4projectmanager/profileeditor.cpp
@@ -140,7 +140,8 @@ void ProFileEditor::setFontSettings(const TextEditor::FontSettings &fs)
     if (categories.isEmpty()) {
         categories << QLatin1String(TextEditor::Constants::C_TYPE)
                    << QLatin1String(TextEditor::Constants::C_KEYWORD)
-                   << QLatin1String(TextEditor::Constants::C_COMMENT);
+                   << QLatin1String(TextEditor::Constants::C_COMMENT)
+                   << QLatin1String(TextEditor::Constants::C_VISUAL_WHITESPACE);
     }
 
     const QVector<QTextCharFormat> formats = fs.toTextCharFormats(categories);
diff --git a/src/plugins/qt4projectmanager/profilehighlighter.cpp b/src/plugins/qt4projectmanager/profilehighlighter.cpp
index cf9e72d2ca0..14daeee9f63 100644
--- a/src/plugins/qt4projectmanager/profilehighlighter.cpp
+++ b/src/plugins/qt4projectmanager/profilehighlighter.cpp
@@ -201,5 +201,6 @@ void ProFileHighlighter::highlightBlock(const QString &text)
         if (i >= text.length())
             break;
     }
-}
 
+    applyFormatToSpaces(text, m_formats[ProfileVisualWhitespaceFormat]);
+}
diff --git a/src/plugins/qt4projectmanager/profilehighlighter.h b/src/plugins/qt4projectmanager/profilehighlighter.h
index 87dadce27e1..78ede9d738c 100644
--- a/src/plugins/qt4projectmanager/profilehighlighter.h
+++ b/src/plugins/qt4projectmanager/profilehighlighter.h
@@ -46,6 +46,7 @@ public:
         ProfileVariableFormat,
         ProfileFunctionFormat,
         ProfileCommentFormat,
+        ProfileVisualWhitespaceFormat,
         NumProfileFormats
     };
 
diff --git a/src/plugins/texteditor/generichighlighter/highlighter.cpp b/src/plugins/texteditor/generichighlighter/highlighter.cpp
index 98de86d7fa5..3775a63d51f 100644
--- a/src/plugins/texteditor/generichighlighter/highlighter.cpp
+++ b/src/plugins/texteditor/generichighlighter/highlighter.cpp
@@ -140,7 +140,7 @@ void Highlighter::highlightBlock(const QString &text)
         }
     }
 
-    applyVisualWhitespaceFormat(text);
+    applyFormatToSpaces(text, m_creatorFormats.value(VisualWhitespace));
 }
 
 void Highlighter::setupDataForBlock(const QString &text)
@@ -408,22 +408,6 @@ void Highlighter::applyFormat(int offset,
     }
 }
 
-void Highlighter::applyVisualWhitespaceFormat(const QString &text)
-{
-    int offset = 0;
-    const int length = text.length();
-    while (offset < length) {
-        if (text.at(offset).isSpace()) {
-            int start = offset++;
-            while (offset < length && text.at(offset).isSpace())
-                ++offset;
-            setFormat(start, offset - start, m_creatorFormats.value(VisualWhitespace));
-        } else {
-            ++offset;
-        }
-    }
-}
-
 void Highlighter::createWillContinueBlock()
 {
     BlockData *data = blockData(currentBlockUserData());
diff --git a/src/plugins/texteditor/generichighlighter/highlighter.h b/src/plugins/texteditor/generichighlighter/highlighter.h
index 43b7b58df3e..07417972595 100644
--- a/src/plugins/texteditor/generichighlighter/highlighter.h
+++ b/src/plugins/texteditor/generichighlighter/highlighter.h
@@ -123,7 +123,6 @@ private:
                      int count,
                      const QString &itemDataName,
                      const QSharedPointer<HighlightDefinition> &definition);
-    void applyVisualWhitespaceFormat(const QString &text);
 
     void applyRegionBasedFolding() const;
     void applyIndentationBasedFolding(const QString &text) const;
diff --git a/src/plugins/texteditor/syntaxhighlighter.cpp b/src/plugins/texteditor/syntaxhighlighter.cpp
index b02d6ef9c6c..346c735b26f 100644
--- a/src/plugins/texteditor/syntaxhighlighter.cpp
+++ b/src/plugins/texteditor/syntaxhighlighter.cpp
@@ -535,6 +535,22 @@ void SyntaxHighlighter::setFormat(int start, int count, const QFont &font)
     setFormat(start, count, format);
 }
 
+void SyntaxHighlighter::applyFormatToSpaces(const QString &text, const QTextCharFormat &format)
+{
+    int offset = 0;
+    const int length = text.length();
+    while (offset < length) {
+        if (text.at(offset).isSpace()) {
+            int start = offset++;
+            while (offset < length && text.at(offset).isSpace())
+                ++offset;
+            setFormat(start, offset - start, format);
+        } else {
+            ++offset;
+        }
+    }
+}
+
 /*!
     \fn QTextCharFormat SyntaxHighlighter::format(int position) const
 
diff --git a/src/plugins/texteditor/syntaxhighlighter.h b/src/plugins/texteditor/syntaxhighlighter.h
index 5b6722b5a34..a010facf640 100644
--- a/src/plugins/texteditor/syntaxhighlighter.h
+++ b/src/plugins/texteditor/syntaxhighlighter.h
@@ -89,6 +89,8 @@ protected:
     void setFormat(int start, int count, const QFont &font);
     QTextCharFormat format(int pos) const;
 
+    void applyFormatToSpaces(const QString &text, const QTextCharFormat &format);
+
     int previousBlockState() const;
     int currentBlockState() const;
     void setCurrentBlockState(int newState);
-- 
GitLab