forked from qt-creator/qt-creator
Editor: Draw line numbers before text marks.
Task-number: QTCREATORBUG-14178 Change-Id: Id7c29d958194b1337316cd550211c5089e719ccb Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user