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 ¤tLineNumberFormat + = 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 ¤tLineNumberFormat - = 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