Xrefs enhancement (#2362)

* Add number of found results to xrefs dialog
* Hide xref from if the item is not an VA
This commit is contained in:
Radwan Selo 2020-08-03 20:11:02 +03:00 committed by GitHub
parent 8f5fbeddde
commit 2cfa4916c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 6 deletions

View File

@ -8,7 +8,7 @@
#include <QJsonArray>
XrefsDialog::XrefsDialog(MainWindow *main, QWidget *parent) :
XrefsDialog::XrefsDialog(MainWindow *main, QWidget *parent, bool hideXrefFrom) :
QDialog(parent),
addr(0),
toModel(this),
@ -52,6 +52,10 @@ XrefsDialog::XrefsDialog(MainWindow *main, QWidget *parent) :
connect(ui->toTreeWidget, &QAbstractItemView::doubleClicked, this, &QWidget::close);
connect(ui->fromTreeWidget, &QAbstractItemView::doubleClicked, this, &QWidget::close);
if (hideXrefFrom) {
hideXrefFromSection();
}
}
XrefsDialog::~XrefsDialog() { }
@ -134,8 +138,8 @@ void XrefsDialog::updatePreview(RVA addr)
void XrefsDialog::updateLabels(QString name)
{
ui->label_xTo->setText(tr("X-Refs to %1:").arg(name));
ui->label_xFrom->setText(tr("X-Refs from %1:").arg(name));
ui->label_xTo->setText(tr("X-Refs to %1 (%2 results):").arg(name).arg(toModel.rowCount()));
ui->label_xFrom->setText(tr("X-Refs from %1 (%2 results):").arg(name).arg(fromModel.rowCount()));
}
void XrefsDialog::updateLabelsForVariables(QString name)
@ -144,14 +148,21 @@ void XrefsDialog::updateLabelsForVariables(QString name)
ui->label_xFrom->setText(tr("Reads from %1").arg(name));
}
void XrefsDialog::hideXrefFromSection()
{
ui->label_xFrom->hide();
ui->fromTreeWidget->hide();
}
void XrefsDialog::fillRefsForAddress(RVA addr, QString name, bool whole_function)
{
setWindowTitle(tr("X-Refs for %1").arg(name));
updateLabels(name);
toModel.readForOffset(addr, true, whole_function);
fromModel.readForOffset(addr, false, whole_function);
updateLabels(name);
// Adjust columns to content
qhelpers::adjustColumns(ui->fromTreeWidget, fromModel.columnCount(), 0);
qhelpers::adjustColumns(ui->toTreeWidget, toModel.columnCount(), 0);

View File

@ -44,7 +44,7 @@ class XrefsDialog : public QDialog
Q_OBJECT
public:
explicit XrefsDialog(MainWindow *main, QWidget *parent);
explicit XrefsDialog(MainWindow *main, QWidget *parent, bool hideXrefFrom=false);
~XrefsDialog();
void fillRefsForAddress(RVA addr, QString name, bool whole_function);
@ -78,6 +78,7 @@ private:
void updateLabels(QString name);
void updateLabelsForVariables(QString name);
void updatePreview(RVA addr);
void hideXrefFromSection();
};
#endif // XREFSDIALOG_H

View File

@ -85,7 +85,7 @@ void AddressableItemContextMenu::onActionCopyAddress()
void AddressableItemContextMenu::onActionShowXrefs()
{
emit xrefsTriggered();
XrefsDialog dialog(mainWindow, nullptr);
XrefsDialog dialog(mainWindow, nullptr, true);
QString tmpName = name;
if (name.isEmpty()) {
name = RAddressString(offset);