From 24d784b06a19ab4238603a58d34dc4c7d866fb0f Mon Sep 17 00:00:00 2001
From: David Schulz <david.schulz@theqtcompany.com>
Date: Wed, 8 Apr 2015 12:56:44 +0200
Subject: [PATCH] Editor: Draw line numbers before text marks.

Task-number: QTCREATORBUG-14178
Change-Id: Id7c29d958194b1337316cd550211c5089e719ccb
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
---
 src/plugins/texteditor/texteditor.cpp | 50 +++++++++++++--------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index 907a3787445..77e26de7f64 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -4355,6 +4355,31 @@ void TextEditorWidget::extraAreaPaintEvent(QPaintEvent *e)
 
         painter.setPen(pal.color(QPalette::Dark));
 
+        if (d->m_lineNumbersVisible) {
+            const QString &number = lineNumber(blockNumber);
+            bool selected = (
+                    (selStart < block.position() + block.length()
+
+                    && selEnd > block.position())
+                    || (selStart == selEnd && selStart == block.position())
+                    );
+            if (selected) {
+                painter.save();
+                QFont f = painter.font();
+                const QTextCharFormat &currentLineNumberFormat
+                        = textDocument()->fontSettings().toTextCharFormat(C_CURRENT_LINE_NUMBER);
+                f.setBold(currentLineNumberFormat.font().bold());
+                f.setItalic(currentLineNumberFormat.font().italic());
+                painter.setFont(f);
+                painter.setPen(currentLineNumberFormat.foreground().color());
+                if (currentLineNumberFormat.background() != Qt::NoBrush)
+                    painter.fillRect(QRect(0, top, extraAreaWidth, height), currentLineNumberFormat.background().color());
+            }
+            painter.drawText(QRectF(markWidth, top, extraAreaWidth - markWidth - 4, height), Qt::AlignRight, number);
+            if (selected)
+                painter.restore();
+        }
+
         if (d->m_codeFoldingVisible || d->m_marksVisible) {
             painter.save();
             painter.setRenderHint(QPainter::Antialiasing, false);
@@ -4452,31 +4477,6 @@ void TextEditorWidget::extraAreaPaintEvent(QPaintEvent *e)
             painter.restore();
         }
 
-        if (d->m_lineNumbersVisible) {
-            const QString &number = lineNumber(blockNumber);
-            bool selected = (
-                    (selStart < block.position() + block.length()
-
-                    && selEnd > block.position())
-                    || (selStart == selEnd && selStart == block.position())
-                    );
-            if (selected) {
-                painter.save();
-                QFont f = painter.font();
-                const QTextCharFormat &currentLineNumberFormat
-                        = textDocument()->fontSettings().toTextCharFormat(C_CURRENT_LINE_NUMBER);
-                f.setBold(currentLineNumberFormat.font().bold());
-                f.setItalic(currentLineNumberFormat.font().italic());
-                painter.setFont(f);
-                painter.setPen(currentLineNumberFormat.foreground().color());
-                if (currentLineNumberFormat.background() != Qt::NoBrush)
-                  painter.fillRect(QRect(0, top, extraAreaWidth, height), currentLineNumberFormat.background().color());
-            }
-            painter.drawText(QRectF(markWidth, top, extraAreaWidth - markWidth - 4, height), Qt::AlignRight, number);
-            if (selected)
-                painter.restore();
-        }
-
         block = nextVisibleBlock;
         blockNumber = nextVisibleBlockNumber;
     }
-- 
GitLab