/*! \internal */ void QLineChangePanel::paint(QPainter *p, QEditor *e) { if ( !e || !e->document() ) return; const QFontMetrics fm( e->document()->font() ); int n, posY, // maxCount = 0, as = fm.ascent(), ls = fm.lineSpacing(), pageBottom = e->viewport()->height(), contentsY = e->verticalOffset(); QString txt; QDocument *d = e->document(); n = d->lineNumber(contentsY); posY = 2 + d->y(n) - contentsY; for ( ; ; ++n ) { //qDebug("n = %i; pos = %i", n, posY); QDocumentLine line = d->line(n); if ( line.isNull() || ((posY - as) > pageBottom) ) break; if ( line.isHidden() ) continue; int span = line.lineSpan(); if ( d->isLineModified(line) ) { p->fillRect(1, posY, 2, ls * span, Qt::yellow); } else if ( d->hasLineEverBeenModified(line) ) { p->fillRect(1, posY, 2, ls * span, Qt::green); } posY += ls * span; } }
/*! \internal */ bool QLineChangePanel::paint(QPainter *p, QEditor *e) { if ( !e || !e->document() ) return true; int n, posY, as = QFontMetrics(e->document()->font()).ascent(), ls = e->document()->getLineSpacing(), pageBottom = e->viewport()->height(), contentsY = e->verticalOffset(); QString txt; QDocument *d = e->document(); n = d->lineNumber(contentsY); posY = 2 + d->y(n) - contentsY; for ( ; ; ++n ) { //qDebug("n = %i; pos = %i", n, posY); QDocumentLine line = d->line(n); if ( line.isNull() || ((posY - as) > pageBottom) ) break; if ( line.isHidden() ) continue; int span = line.lineSpan(); if ( d->isLineModified(line) ) { p->fillRect(1, posY, 2, ls * span, QColor(255, 216, 0)); // yellow } else if ( d->hasLineEverBeenModified(line) ) { p->fillRect(1, posY, 2, ls * span, QColor(70, 191, 0)); // green } posY += ls * span; } return true; }