Don't attempt to draw outside of the graph viewport

This commit is contained in:
Duncan Ogilvie 2017-11-20 00:08:53 +01:00
parent 6b650dbc14
commit 0dc57d095d
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8

View File

@ -222,6 +222,8 @@ void DisassemblerGraphView::paintNormal(QPainter & p, QRect & viewportRect, int
{ {
int y = block.y + (2 * this->charWidth) + (int(block.block.header_text.lines.size()) * this->charHeight); int y = block.y + (2 * this->charWidth) + (int(block.block.header_text.lines.size()) * this->charHeight);
for(Instr & instr : block.block.instrs) for(Instr & instr : block.block.instrs)
{
if(y > viewportRect.y() - int(instr.text.lines.size()) * this->charHeight && y < viewportRect.bottom())
{ {
auto selected = instr.addr == this->cur_instr; auto selected = instr.addr == this->cur_instr;
//auto traceCount = dbgfunctions->GetTraceRecordHitCount(instr.addr); //auto traceCount = dbgfunctions->GetTraceRecordHitCount(instr.addr);
@ -254,6 +256,7 @@ void DisassemblerGraphView::paintNormal(QPainter & p, QRect & viewportRect, int
disassemblyTracedColor.green(), disassemblyTracedColor.green(),
std::max(0, std::min(256, disassemblyTracedColor.blue() + colorDiff)))); std::max(0, std::min(256, disassemblyTracedColor.blue() + colorDiff))));
} }
}
y += int(instr.text.lines.size()) * this->charHeight; y += int(instr.text.lines.size()) * this->charHeight;
} }
} }
@ -262,14 +265,19 @@ void DisassemblerGraphView::paintNormal(QPainter & p, QRect & viewportRect, int
auto x = block.x + (2 * this->charWidth); auto x = block.x + (2 * this->charWidth);
auto y = block.y + (2 * this->charWidth); auto y = block.y + (2 * this->charWidth);
for(auto & line : block.block.header_text.lines) for(auto & line : block.block.header_text.lines)
{
if(y > viewportRect.y() - this->charHeight && y < viewportRect.bottom())
{ {
RichTextPainter::paintRichText(&p, x, y, block.width, this->charHeight, 0, line, mFontMetrics); RichTextPainter::paintRichText(&p, x, y, block.width, this->charHeight, 0, line, mFontMetrics);
}
y += this->charHeight; y += this->charHeight;
} }
for(Instr & instr : block.block.instrs) for(Instr & instr : block.block.instrs)
{ {
for(auto & line : instr.text.lines) for(auto & line : instr.text.lines)
{
if(y > viewportRect.y() - this->charHeight && y < viewportRect.bottom())
{ {
int rectSize = qRound(this->charWidth); int rectSize = qRound(this->charWidth);
if(rectSize % 2) if(rectSize % 2)
@ -302,6 +310,7 @@ void DisassemblerGraphView::paintNormal(QPainter & p, QRect & viewportRect, int
p.fillRect(bpRect, mCipColor); p.fillRect(bpRect, mCipColor);
RichTextPainter::paintRichText(&p, x + this->charWidth, y, block.width - this->charWidth, this->charHeight, 0, line, mFontMetrics); RichTextPainter::paintRichText(&p, x + this->charWidth, y, block.width - this->charWidth, this->charHeight, 0, line, mFontMetrics);
}
y += this->charHeight; y += this->charHeight;
} }
} }