Remove additional lines from Disassembly

This commit is contained in:
Florian Märkl 2017-11-20 11:04:03 +01:00
parent 0dc57d095d
commit e9c09d8fa1
2 changed files with 17 additions and 4 deletions

View File

@ -152,7 +152,7 @@ void DisassemblyWidget::refreshDisasm(RVA offset)
// because pd N may return more than N lines, move maxLines lines down from the top // because pd N may return more than N lines, move maxLines lines down from the top
mDisasTextEdit->moveCursor(QTextCursor::Start); mDisasTextEdit->moveCursor(QTextCursor::Start);
QTextCursor tc = mDisasTextEdit->textCursor(); QTextCursor tc = mDisasTextEdit->textCursor();
tc.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, maxLines-1); tc.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, maxLines - 1);
mDisasTextEdit->setTextCursor(tc); mDisasTextEdit->setTextCursor(tc);
connectCursorPositionChanged(false); connectCursorPositionChanged(false);
@ -163,6 +163,11 @@ void DisassemblyWidget::refreshDisasm(RVA offset)
bottomOffset = topOffset; bottomOffset = topOffset;
} }
// remove additional lines
tc.movePosition(QTextCursor::EndOfLine);
tc.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);
tc.removeSelectedText();
updateCursorPosition(); updateCursorPosition();
mDisasTextEdit->setLockScroll(false); mDisasTextEdit->setLockScroll(false);
@ -191,14 +196,18 @@ void DisassemblyWidget::scrollInstructions(int count)
} }
void DisassemblyWidget::updateMaxLines() bool DisassemblyWidget::updateMaxLines()
{ {
int currentMaxLines = qhelpers::getMaxFullyDisplayedLines(mDisasTextEdit); int currentMaxLines = qhelpers::getMaxFullyDisplayedLines(mDisasTextEdit);
if (currentMaxLines != maxLines) if (currentMaxLines != maxLines)
{ {
maxLines = currentMaxLines; maxLines = currentMaxLines;
refreshDisasm(); refreshDisasm();
return true;
} }
return false;
} }
void DisassemblyWidget::highlightCurrentLine() void DisassemblyWidget::highlightCurrentLine()
@ -434,7 +443,11 @@ void DisassemblyWidget::raisePrioritizedMemoryWidget(CutterCore::MemoryWidgetTyp
void DisassemblyWidget::fontsUpdatedSlot() void DisassemblyWidget::fontsUpdatedSlot()
{ {
mDisasTextEdit->setFont(Config()->getFont()); mDisasTextEdit->setFont(Config()->getFont());
refreshDisasm();
if (!updateMaxLines()) // updateMaxLines() returns true if it already refreshed.
{
refreshDisasm();
}
} }
DisassemblyScrollArea::DisassemblyScrollArea(QWidget *parent) : QAbstractScrollArea(parent) DisassemblyScrollArea::DisassemblyScrollArea(QWidget *parent) : QAbstractScrollArea(parent)

View File

@ -31,7 +31,7 @@ private slots:
void raisePrioritizedMemoryWidget(CutterCore::MemoryWidgetType type); void raisePrioritizedMemoryWidget(CutterCore::MemoryWidgetType type);
void scrollInstructions(int count); void scrollInstructions(int count);
void updateMaxLines(); bool updateMaxLines();
void cursorPositionChanged(); void cursorPositionChanged();