/*!
	\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;
	}
}
Example #2
0
/*!
	\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;
}