本文整理汇总了C++中QTextBlock::isVisible方法的典型用法代码示例。如果您正苦于以下问题:C++ QTextBlock::isVisible方法的具体用法?C++ QTextBlock::isVisible怎么用?C++ QTextBlock::isVisible使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QTextBlock
的用法示例。
在下文中一共展示了QTextBlock::isVisible方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: unfold
void JSEdit::unfold(int line)
{
QTextBlock startBlock = document()->findBlockByNumber(line - 1);
int endPos = findClosingConstruct(startBlock);
QTextBlock block = startBlock.next();
while (block.isValid() && !block.isVisible()) {
block.setVisible(true);
block.setLineCount(block.layout()->lineCount());
endPos = block.position() + block.length();
block = block.next();
}
document()->markContentsDirty(startBlock.position(), endPos - startBlock.position() + 1);
updateSidebar();
update();
JSDocLayout *layout = reinterpret_cast<JSDocLayout*>(document()->documentLayout());
layout->forceUpdate();
}
示例2: paintEvent
void MgLinesNumbersExtraArea::paintEvent(QPaintEvent *e)
{
QRect rect = e->rect();
QPalette pal = palette();
pal.setCurrentColorGroup(QPalette::Active);
QPainter painter(this);
painter.fillRect(rect, Qt::lightGray);
const QFontMetrics fm(m_editor->fontMetrics());
int linesNumbersAreaWidth = width();
painter.fillRect(rect, Qt::white);//lines numbers
painter.setPen(QPen(pal.color(QPalette::Background), 2));
painter.drawLine(rect.x() + linesNumbersAreaWidth-1, rect.top(), rect.x() + linesNumbersAreaWidth-1, rect.bottom());
painter.setRenderHint(QPainter::Antialiasing);
QTextBlock block = m_editor->firstVisibleBlock();
int blockNumber = block.blockNumber();
qreal top = m_editor->blockBoundingGeometry(block).translated(m_editor->contentOffset()).top();
qreal bottom = top + m_editor->blockBoundingRect(block).height();
painter.setPen(QColor(Qt::gray));
while (block.isValid() && top <= rect.bottom())
{
if (block.isVisible() && bottom >= rect.top())
{
int lineNumber = blockNumber + m_editor->baseLineNumber();
QString number = QString::number(lineNumber);
painter.drawText(rect.x() , (int)top, rect.x() + linesNumbersAreaWidth - 4,
fm.height(), Qt::AlignCenter, number);
}
block = block.next();
top = bottom;
bottom = top + m_editor->blockBoundingRect(block).height();
++blockNumber;
}
}
示例3: blockBoundingRect
QRectF TextDocumentLayout::blockBoundingRect(const QTextBlock &block) const
{
if (!block.isValid()) { return QRectF(); }
QTextLayout *tl = block.layout();
if (!tl->lineCount())
const_cast<TextDocumentLayout*>(this)->layoutBlock(block);
QRectF br;
if (block.isVisible()) {
br = QRectF(QPointF(0, 0), tl->boundingRect().bottomRight());
if (tl->lineCount() == 1)
br.setWidth(qMax(br.width(), tl->lineAt(0).naturalTextWidth()));
qreal margin = document()->documentMargin();
br.adjust(0, 0, margin, 0);
if (!block.next().isValid())
br.adjust(0, 0, 0, margin);
}
return br;
}
示例4: paintHandleArea
void CodeEditor::paintHandleArea(QPaintEvent *event)
{
QPainter painter(d_numberArea);
painter.fillRect(event->rect(), QColor(224,224,224) );
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
const int w = fontMetrics().width('w') + 2;
const int h = fontMetrics().height();
while (block.isValid() && top <= event->rect().bottom())
{
painter.setPen(Qt::black);
if( d_breakPoints.contains( blockNumber ) )
{
const QRect r = QRect( 0, top, d_numberArea->width(), h );
painter.fillRect( r, Qt::darkRed );
painter.setPen(Qt::white);
}
if( d_showNumbers && block.isVisible() && bottom >= event->rect().top())
{
QString number = QString::number(blockNumber + 1);
painter.drawText(0, top, d_numberArea->width() - 2, h, Qt::AlignRight, number);
}
if( blockNumber == d_curPos )
{
const QRect r = QRect( d_numberArea->width() - w, top, w, h );
painter.setBrush(Qt::yellow);
painter.setPen(Qt::black);
painter.drawPolygon( QPolygon() << r.topLeft() << r.bottomLeft() << r.adjusted(0,0,0,-h/2).bottomRight() );
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例5: lineNumberAreaPaintEvent
void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(lineNumberArea);
painter.fillRect(event->rect(), Qt::lightGray);
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom()) {
if (block.isVisible() && bottom >= event->rect().top()) {
QString number = QString::number(blockNumber + 1);
painter.setPen(Qt::black);
painter.drawText(0, top, lineNumberArea->width(), fontMetrics().height(),
Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例6: lineNumberAreaPaintEvent
void ScriptTextEdit::lineNumberAreaPaintEvent(QPaintEvent *event)
{
int lineAreaWidth = mLineNumberArea->width();
QPainter painter(mLineNumberArea);
painter.fillRect(event->rect(), Qt::white);
QPen linepen;
linepen.setWidth(1);
linepen.setColor( Qt::lightGray );
painter.setPen(linepen);
painter.drawLine(lineAreaWidth-1,0,lineAreaWidth-1,mLineNumberArea->height());
int currentLine = textCursor().blockNumber();
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
QFont font=painter.font();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom())
{
if (block.isVisible() && bottom >= event->rect().top())
{
QString number = QString::number(blockNumber + 1);
painter.setPen(Qt::darkGray);
font.setBold(blockNumber==currentLine);
painter.setFont( font );
painter.drawText(-2, top, lineAreaWidth, fontMetrics().height(),
Qt::AlignRight | Qt::AlignVCenter, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例7: lineNumberAreaPaintEvent
void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
//paint on line number area
QPainter painter(lineNumberArea);
painter.fillRect(event->rect(), settings.value("linenumberpanelcolor", palette().color(QPalette::Window)).value<QColor>());
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom()) {
if (block.isVisible() && bottom >= event->rect().top()) {
QString number = QString::number(blockNumber + 1);
painter.setPen(settings.value("fontcolor", palette().color(QPalette::Text)).value<QColor>());
painter.drawText(0, top, lineNumberArea->width() - debugAreaWidth, fontMetrics().height(),
Qt::AlignRight, number);
if (blockNumber + 1 == currentDebugLine)
//blocks counting starts with 0, line number is equivalent (block number + 1)
//if QTextOption::NoWrap is not set, lines count - visible lines, block count - lines divided by '\n'
painter.drawPixmap(lineNumberArea->width() - debugAreaWidth + 3,
top + fontMetrics().height() / 2 - debugImage.height() / 2,
debugImage.width(), debugImage.height(), debugImage);
if (breakpoints.contains(blockNumber + 1) && hasBreakpoints)
painter.drawPixmap(lineNumberArea->width() - debugAreaWidth + 3,
top + fontMetrics().height() / 2 - breakpointImage.height() / 2,
breakpointImage.width(), breakpointImage.height(), breakpointImage);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例8: promptPaintEvent
void PgxConsole::promptPaintEvent(QPaintEvent *event)
{
QPainter painter(prompt);
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom()) {
if (block.isVisible() && bottom >= event->rect().top()) {
QString pr = QLatin1String(">");
QString number;
if(block.previous().isVisible() && block.previous().isValid()) {
number = QString::number(blockNumber + 1);
if(block.previous().text().endsWith("\\"))
pr = QLatin1String(" ");
else
pr = QLatin1String(">");
}
if(block.text().endsWith("\\")) {
if(block.previous().text().endsWith("\\"))
pr = QLatin1String(" ");
else
pr = QLatin1String(">");
}
painter.setPen(Qt::lightGray);
painter.drawText(0, top, prompt->width(), fontMetrics().height(),
Qt::AlignCenter, pr);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}
示例9: if
void BaseTextDocumentLayout::FoldValidator::process(QTextBlock block)
{
if (!m_layout)
return;
const QTextBlock &previous = block.previous();
if (!previous.isValid())
return;
if ((BaseTextDocumentLayout::isFolded(previous)
&& !BaseTextDocumentLayout::canFold(previous))
|| (!BaseTextDocumentLayout::isFolded(previous)
&& BaseTextDocumentLayout::canFold(previous)
&& !block.isVisible())) {
BaseTextDocumentLayout::setFolded(previous, !BaseTextDocumentLayout::isFolded(previous));
}
if (BaseTextDocumentLayout::isFolded(previous) && !m_insideFold)
m_insideFold = BaseTextDocumentLayout::foldingIndent(block);
bool toggleVisibility = false;
if (m_insideFold) {
if (BaseTextDocumentLayout::foldingIndent(block) >= m_insideFold) {
if (block.isVisible())
toggleVisibility = true;
} else {
m_insideFold = 0;
if (!block.isVisible())
toggleVisibility = true;
}
} else if (!block.isVisible()) {
toggleVisibility = true;
}
if (toggleVisibility) {
block.setVisible(!block.isVisible());
block.setLineCount(block.isVisible() ? qMax(1, block.layout()->lineCount()) : 0);
m_requestDocUpdate = true;
}
}
示例10: layoutBlock
void TextDocumentLayout::layoutBlock(const QTextBlock &block)
{
QTextDocument *doc = document();
qreal margin = doc->documentMargin();
qreal blockMaximumWidth = 0;
qreal height = 0;
QTextLayout *tl = block.layout();
QTextOption option = doc->defaultTextOption();
tl->setTextOption(option);
int extraMargin = 0;
if (option.flags() & QTextOption::AddSpaceForLineAndParagraphSeparators) {
QFontMetrics fm(block.charFormat().font());
extraMargin += fm.width(QChar(0x21B5));
}
tl->beginLayout();
qreal availableWidth = d->width;
if (availableWidth <= 0) {
availableWidth = qreal(INT_MAX); // similar to text edit with pageSize.width == 0
}
availableWidth -= 2*margin + extraMargin;
qreal indentMargin = 0;
while (1) {
QTextLine line = tl->createLine();
if (!line.isValid())
break;
line.setLeadingIncluded(true);
line.setLineWidth(availableWidth - indentMargin);
line.setPosition(QPointF(margin + indentMargin, height));
if(!height) //enter only in the first iteration
{
indentMargin = indentWidth(block);
}
height += line.height();
blockMaximumWidth = qMax(blockMaximumWidth, line.naturalTextWidth() + 2*margin);
}
tl->endLayout();
int previousLineCount = doc->lineCount();
const_cast<QTextBlock&>(block).setLineCount(block.isVisible() ? tl->lineCount() : 0);
int lineCount = doc->lineCount();
bool emitDocumentSizeChanged = previousLineCount != lineCount;
if (blockMaximumWidth > d->maximumWidth) {
// new longest line
d->maximumWidth = blockMaximumWidth;
d->maximumWidthBlockNumber = block.blockNumber();
emitDocumentSizeChanged = true;
} else if (block.blockNumber() == d->maximumWidthBlockNumber && blockMaximumWidth < d->maximumWidth) {
// longest line shrinking
QTextBlock b = doc->firstBlock();
d->maximumWidth = 0;
QTextBlock maximumBlock;
while (b.isValid()) {
qreal blockMaximumWidth = blockWidth(b);
if (blockMaximumWidth > d->maximumWidth) {
d->maximumWidth = blockMaximumWidth;
maximumBlock = b;
}
b = b.next();
}
if (maximumBlock.isValid()) {
d->maximumWidthBlockNumber = maximumBlock.blockNumber();
emitDocumentSizeChanged = true;
}
}
if (emitDocumentSizeChanged)// && !d->blockDocumentSizeChanged)
emit documentSizeChanged(documentSize());
emit updateBlock(block);
}
示例11: extraAreaPaintEvent
void QScriptEdit::extraAreaPaintEvent(QPaintEvent *e)
{
QRect rect = e->rect();
QPalette pal = palette();
pal.setCurrentColorGroup(QPalette::Active);
QPainter painter(m_extraArea);
painter.fillRect(rect, Qt::lightGray);
const QFontMetrics fm(fontMetrics());
int markWidth = fm.lineSpacing();
int extraAreaWidth = m_extraArea->width();
QLinearGradient gradient(QPointF(extraAreaWidth - 10, 0), QPointF(extraAreaWidth, 0));
gradient.setColorAt(0, pal.color(QPalette::Background));
gradient.setColorAt(1, pal.color(QPalette::Base));
painter.fillRect(rect, gradient);
QLinearGradient gradient2(QPointF(0, 0), QPointF(markWidth, 0));
gradient2.setColorAt(0, pal.color(QPalette::Dark));
gradient2.setColorAt(1, pal.color(QPalette::Background));
painter.fillRect(rect.intersected(QRect(rect.x(), rect.y(), markWidth, rect.height())), gradient2);
painter.setPen(QPen(pal.color(QPalette::Background), 2));
if (isLeftToRight())
painter.drawLine(rect.x() + extraAreaWidth-1, rect.top(), rect.x() + extraAreaWidth-1, rect.bottom());
else
painter.drawLine(rect.x(), rect.top(), rect.x(), rect.bottom());
painter.setRenderHint(QPainter::Antialiasing);
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
qreal top = blockBoundingGeometry(block).translated(contentOffset()).top();
qreal bottom = top + blockBoundingRect(block).height();
QString imagesPath = QString::fromLatin1(":/qt/scripttools/debugging/images");
QString imageExt;
// SVGs don't work on all platforms, even when QT_NO_SVG is not defined, so disable SVG usage for now.
// #ifndef QT_NO_SVG
#if 0
imageExt = QString::fromLatin1("svg");
#else
imageExt = QString::fromLatin1("png");
#endif
while (block.isValid() && top <= rect.bottom()) {
if (block.isVisible() && bottom >= rect.top()) {
int lineNumber = blockNumber + m_baseLineNumber;
if (m_breakpoints.contains(lineNumber)) {
int radius = fm.lineSpacing() - 1;
QRect r(rect.x(), (int)top, radius, radius);
QIcon icon(m_breakpoints[lineNumber].enabled
? QString::fromLatin1("%0/breakpoint.%1").arg(imagesPath).arg(imageExt)
: QString::fromLatin1("%0/d_breakpoint.%1").arg(imagesPath).arg(imageExt));
icon.paint(&painter, r, Qt::AlignCenter);
}
if (m_executionLineNumber == lineNumber) {
int radius = fm.lineSpacing() - 1;
QRect r(rect.x(), (int)top, radius, radius);
QIcon icon(QString::fromLatin1("%0/location.%1").arg(imagesPath).arg(imageExt));
icon.paint(&painter, r, Qt::AlignCenter);
}
if (!isExecutableLine(lineNumber))
painter.setPen(pal.color(QPalette::Mid));
else
painter.setPen(QColor(Qt::darkCyan));
QString number = QString::number(lineNumber);
painter.drawText(rect.x() + markWidth, (int)top, rect.x() + extraAreaWidth - markWidth - 4,
fm.height(), Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + blockBoundingRect(block).height();
++blockNumber;
}
}
示例12: contentsChange
void CodeEditor::contentsChange(int pos, int, int)
{
QTextBlock block = textCursor().block();
// сдвиг блока клавишей Return
// состояние предыдущего блока может быть не верным
if (block.userState() == Empty)
block.setUserState(block.previous().userState() | Rehighligh);
block = document()->findBlock(pos);
int startBlockNum = block.blockNumber();
bool forceUnfold = false;
while (block.isValid()) {
int previousState = block.userState();
int state = setBlockState(block);
if (!(previousState & Error) && !(state & Error) &&
previousState & Comment && state & Comment) {
QTextBlock next = block.next();
int nextBlockState = next.userState();
setBlockState(next);
next.setUserState(nextBlockState); // в начальное состояние
// правильное состояние комментария известно
// только после обработки последующей строки
state = block.userState();
}
if (state != previousState) {
if (!forceUnfold) { // разворачиваем предыдущие блоки
QTextBlock previous = block.previous();
while (previous.isValid()) {
int state = previous.userState();
if (!(state & Error) && state & Folded)
previous.setUserState(state & ~Folded);
if (state & Error || !(state & Nested) || previous.isVisible())
break;
previous.setVisible(true);
previous = previous.previous();
}
}
forceUnfold = true;
} else if (block.blockNumber() > startBlockNum && // не начальный блок
state & Begin && !(state & Nested)) { // (state & Begin ...) пропускаем End главного блока
break; // без state & Error, иначе срабатывает между блоками
} // при первом обновлении
if (forceUnfold) { // разворачиваем последующие блоки
if (!(state & Error) && state & Folded)
state &= ~Folded;
block.setVisible(true);
}
block.setUserState(state | Rehighligh);
block = block.next();
}
}
示例13: extraAreaPaintEvent
void CodeEditor::extraAreaPaintEvent()
{
QTextBlock block = firstVisibleBlock();
QPainter painter(extraArea);
QPen pen = painter.pen();
QFont font = painter.font();
bool bold = font.bold();
int y = 0;
int cx = lineNumWidth + foldBoxIndent + foldBoxWidth / 2; // центр маркера блока по x
do {
if (!block.isVisible())
continue;
QRectF rect = blockBoundingGeometry(block);
y = rect.translated(contentOffset()).y();
if (block == textCursor().block()) {
painter.setPen(Qt::yellow);
font.setBold(!bold);
} else {
font.setBold(bold);
}
painter.setFont(font);
painter.drawText(0, y, lineNumWidth, fontMetrics().height(), Qt::AlignRight,
QString::number(block.blockNumber() + 1)); // номер строки
painter.setPen(pen);
int state = block.userState();
int cy = y + fontMetrics().height() / 2; // центр маркера по Y
if (!(state & Error) && !(state & Begin && state & End && !(state & Nested))) {
if (state & Begin) {
if (state & Comment)
painter.drawEllipse(FOLDBOXRECT(cy));
else
painter.drawRoundedRect(FOLDBOXRECT(cy), 7, 3);
if (!(!(state & Nested) && state & Folded))
painter.drawLine(cx, cy + foldBoxWidth / 2, cx, y + rect.height()); // края маркера вниз
if (state & Nested)
painter.drawLine(cx, y, cx, cy - foldBoxWidth / 2); // края маркера вверх
painter.drawLine(cx - foldBoxLength, cy, cx + foldBoxLength, cy); // горизонтальная линия внутри маркера
if (state & Folded)
painter.drawLine(cx, cy - foldBoxLength, cx, cy + foldBoxLength); // вертикальная линия внутри маркера
} else if (state & End) {
painter.drawLine(cx, cy, cx + foldBoxLength, cy); // от центра вправо
if (state & Nested)
painter.drawLine(cx, y, cx, y + rect.height()); // вертикальная линия
else
painter.drawLine(cx, y, cx, cy); // от центра вверх
} else if (state & Nested) {
painter.drawLine(cx, y, cx, y + rect.height()); // вертикальная линия
}
}
// в paintEvent не работает
if (state != Empty && state & Rehighligh) {
highlighter->rehighlightBlock(block);
block.setUserState(state & ~Rehighligh);
}
} while ((block = block.next()).isValid() && y < viewport()->height());
}
示例14: doCollapse
void TextBlockUserData::doCollapse(const QTextBlock& block, bool visible)
{
QTextBlock info = block;
if (block.userData() && static_cast<TextBlockUserData*>(block.userData())->collapseMode() == CollapseAfter)
;
else if (block.next().userData()
&& static_cast<TextBlockUserData*>(block.next().userData())->collapseMode()
== TextBlockUserData::CollapseThis)
info = block.next();
else {
if (visible && !block.next().isVisible()) {
// no match, at least unfold!
QTextBlock b = block.next();
while (b.isValid() && !b.isVisible()) {
b.setVisible(true);
b.setLineCount(visible ? qMax(1, b.layout()->lineCount()) : 0);
b = b.next();
}
}
return;
}
int pos = static_cast<TextBlockUserData*>(info.userData())->collapseAtPos();
if (pos < 0)
return;
QTextCursor cursor(info);
cursor.setPosition(cursor.position() + pos);
if (matchCursorForward(&cursor) != Match) {
if (visible) {
// no match, at least unfold!
QTextBlock b = block.next();
while (b.isValid() && !b.isVisible()) {
b.setVisible(true);
b.setLineCount(visible ? qMax(1, b.layout()->lineCount()) : 0);
b = b.next();
}
}
return;
}
QTextBlock b = block.next();
while (b < cursor.block()) {
b.setVisible(visible);
b.setLineCount(visible ? qMax(1, b.layout()->lineCount()) : 0);
if (visible) {
TextBlockUserData *data = canCollapse(b);
if (data && data->collapsed()) {
QTextBlock end = testCollapse(b);
if (data->collapseIncludesClosure())
end = end.next();
if (end.isValid()) {
b = end;
continue;
}
}
}
b = b.next();
}
bool collapseIncludesClosure = hasClosingCollapseAtEnd(b);
if (collapseIncludesClosure) {
b.setVisible(visible);
b.setLineCount(visible ? qMax(1, b.layout()->lineCount()) : 0);
}
static_cast<TextBlockUserData*>(info.userData())->setCollapseIncludesClosure(collapseIncludesClosure);
static_cast<TextBlockUserData*>(info.userData())->setCollapsed(!block.next().isVisible());
}
示例15: drawLineInfoArea
void SourceWindow::drawLineInfoArea(QPainter* p, QPaintEvent* event)
{
QTextBlock block = firstVisibleBlock();
p->setFont(m_lineNoFont);
for (; block.isValid(); block = block.next())
{
if (!block.isVisible())
continue;
QRect r = blockBoundingGeometry(block).translated(contentOffset()).toRect();
if (r.bottom() < event->rect().top())
continue; // skip blocks that are higher than the region being updated
else if (r.top() > event->rect().bottom())
break; // all the following blocks are lower then the region being updated
int row = block.blockNumber();
uchar item = m_lineItems[row];
int h = r.height();
p->save();
p->translate(0, r.top());
if (item & liBP) {
// enabled breakpoint
int y = (h - m_brkena.height())/2;
if (y < 0) y = 0;
p->drawPixmap(0,y,m_brkena);
}
if (item & liBPdisabled) {
// disabled breakpoint
int y = (h - m_brkdis.height())/2;
if (y < 0) y = 0;
p->drawPixmap(0,y,m_brkdis);
}
if (item & liBPtemporary) {
// temporary breakpoint marker
int y = (h - m_brktmp.height())/2;
if (y < 0) y = 0;
p->drawPixmap(0,y,m_brktmp);
}
if (item & liBPconditional) {
// conditional breakpoint marker
int y = (h - m_brkcond.height())/2;
if (y < 0) y = 0;
p->drawPixmap(0,y,m_brkcond);
}
if (item & liBPorphan) {
// orphaned breakpoint marker
int y = (h - m_brkcond.height())/2;
if (y < 0) y = 0;
p->drawPixmap(0,y,m_brkorph);
}
if (item & liPC) {
// program counter in innermost frame
int y = (h - m_pcinner.height())/2;
if (y < 0) y = 0;
p->drawPixmap(0,y,m_pcinner);
}
if (item & liPCup) {
// program counter somewhere up the stack
int y = (h - m_pcup.height())/2;
if (y < 0) y = 0;
p->drawPixmap(0,y,m_pcup);
}
p->translate(m_widthItems, 0);
if (!isRowDisassCode(row) && m_sourceCode[rowToLine(row)].canDisass) {
int w = m_widthPlus;
int x = w/2;
int y = h/2;
p->drawLine(x-2, y, x+2, y);
if (!isRowExpanded(row)) {
p->drawLine(x, y-2, x, y+2);
}
}
p->translate(m_widthPlus, 0);
if (!isRowDisassCode(row)) {
p->drawText(0, 0, m_widthLineNo, h, Qt::AlignRight|Qt::AlignVCenter,
QString().setNum(rowToLine(row)+1));
}
p->restore();
}
}