From ecf8b3f9d730bc08bf40c7ef2e5659769a77ee1e Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Tue, 15 Jul 2025 16:43:04 -0400 Subject: If type references exceed the xref item limit, other references may be less than the item limit but still not a complete list. Add the + indicator on the other categories if this condition is detected. --- ui/xreflist.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'ui') diff --git a/ui/xreflist.h b/ui/xreflist.h index 1785bc0a..ed29843b 100644 --- a/ui/xreflist.h +++ b/ui/xreflist.h @@ -350,7 +350,7 @@ class BINARYNINJAUIAPI CrossReferenceTreeModel : public QAbstractItemModel std::optional m_graphType; SelectionInfoForXref m_curRef; - public: +public: CrossReferenceTreeModel(QWidget* parent, BinaryViewRef data, ViewFrame* view); virtual ~CrossReferenceTreeModel(); @@ -460,8 +460,9 @@ class BINARYNINJAUIAPI CrossReferenceItemDelegate : public QStyledItemDelegate QImage m_xrefTo, m_xrefFrom; bool m_table; size_t m_maxUIItems; + bool m_dependentRefsExceeded = false; - public: +public: CrossReferenceItemDelegate(QWidget* parent, bool table); void updateFonts(); @@ -472,6 +473,7 @@ class BINARYNINJAUIAPI CrossReferenceItemDelegate : public QStyledItemDelegate virtual QImage DrawArrow(bool direction) const; void updateMaxUIItems(size_t count); size_t getMaxUIItems() const { return m_maxUIItems; } + void setDependentRefsExceeded(bool value) { m_dependentRefsExceeded = value; } }; /*! @@ -532,7 +534,8 @@ class BINARYNINJAUIAPI CrossReferenceContainer virtual QModelIndex prevIndex() = 0; virtual QModelIndexList selectedRows() const = 0; virtual bool hasSelection() const = 0; - virtual void setNewSelection(std::vector& refs, bool newRefTarget, const SelectionInfoForXref& ref) = 0; + virtual void setNewSelection(std::vector& refs, bool newRefTarget, const SelectionInfoForXref& ref, + bool dependentRefsExceeded) = 0; virtual void updateFonts() = 0; virtual int leafCount() const = 0; virtual int filteredCount() const = 0; @@ -560,7 +563,8 @@ public: CrossReferenceTree(CrossReferenceWidget* parent, ViewFrame* view, BinaryViewRef data); virtual ~CrossReferenceTree(); - void setNewSelection(std::vector& refs, bool newRefTarget, const SelectionInfoForXref& ref) override; + void setNewSelection(std::vector& refs, bool newRefTarget, const SelectionInfoForXref& ref, + bool dependentRefsExceeded) override; virtual QModelIndex nextIndex() override; virtual QModelIndex prevIndex() override; virtual bool hasSelection() const override { return selectionModel()->selectedRows().size() != 0; } @@ -606,7 +610,8 @@ class BINARYNINJAUIAPI CrossReferenceTable : public QTableView, public CrossRefe virtual ~CrossReferenceTable(); void updateFontAndHeaderSize(); - void setNewSelection(std::vector& refs, bool newRefTarget, const SelectionInfoForXref& ref) override; + void setNewSelection(std::vector& refs, bool newRefTarget, const SelectionInfoForXref& ref, + bool dependentRefsExceeded) override; virtual QModelIndex nextIndex() override; virtual QModelIndex prevIndex() override; virtual bool hasSelection() const override { return selectionModel()->selectedRows().size() != 0; } -- cgit v1.3.1