diff options
| author | Peter LaFosse <peter@vector35.com> | 2019-09-19 17:31:44 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2019-09-27 21:07:22 -0400 |
| commit | 052b1ea7871c3bfd780a73bcac942db54c95422e (patch) | |
| tree | 23b72e1461868c096580ae3f6ebe02d4add06d26 /ui | |
| parent | bafb7665495735a758caf1d6334577bc0860c5d8 (diff) | |
Tag notifications & tag type list optimized
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/flowgraphwidget.h | 1 | ||||
| -rw-r--r-- | ui/linearview.h | 1 | ||||
| -rw-r--r-- | ui/taglist.h | 8 | ||||
| -rw-r--r-- | ui/tagtypelist.h | 17 | ||||
| -rw-r--r-- | ui/tokenizedtextview.h | 1 |
5 files changed, 25 insertions, 3 deletions
diff --git a/ui/flowgraphwidget.h b/ui/flowgraphwidget.h index 9c4dfcd0..0d1c6355 100644 --- a/ui/flowgraphwidget.h +++ b/ui/flowgraphwidget.h @@ -182,6 +182,7 @@ public: virtual void OnAnalysisFunctionUpdated(BinaryNinja::BinaryView* data, BinaryNinja::Function* func) override; virtual void OnAnalysisFunctionUpdateRequested(BinaryNinja::BinaryView* data, BinaryNinja::Function* func) override; virtual void OnDataMetadataUpdated(BinaryNinja::BinaryView* data, uint64_t offset) override; + virtual void OnTagUpdated(BinaryNinja::BinaryView* data, const BinaryNinja::TagReference& tagRef) override; void setInitialGraph(FlowGraphRef graph); void setInitialGraph(FlowGraphRef graph, uint64_t addr); diff --git a/ui/linearview.h b/ui/linearview.h index 7a7f9ad8..adc14f2e 100644 --- a/ui/linearview.h +++ b/ui/linearview.h @@ -213,6 +213,7 @@ public: virtual void OnDataVariableRemoved(BinaryNinja::BinaryView* view, const BinaryNinja::DataVariable& var) override; virtual void OnDataVariableUpdated(BinaryNinja::BinaryView* view, const BinaryNinja::DataVariable& var) override; virtual void OnDataMetadataUpdated(BinaryNinja::BinaryView* view, uint64_t offset) override; + virtual void OnTagUpdated(BinaryNinja::BinaryView* data, const BinaryNinja::TagReference& tagRef) override; virtual void updateFonts() override; diff --git a/ui/taglist.h b/ui/taglist.h index c2a5bd8a..11e2333e 100644 --- a/ui/taglist.h +++ b/ui/taglist.h @@ -140,7 +140,13 @@ protected: void selectFirstItem() override; void activateFirstItem() override; - virtual void OnDataMetadataUpdated(BinaryNinja::BinaryView*, uint64_t) override; + virtual void OnTagAdded(BinaryNinja::BinaryView*, const BinaryNinja::TagReference&) override; + virtual void OnTagUpdated(BinaryNinja::BinaryView*, const BinaryNinja::TagReference&) override; + virtual void OnTagRemoved(BinaryNinja::BinaryView*, const BinaryNinja::TagReference&) override; + virtual void OnTagTypeUpdated(BinaryNinja::BinaryView*, TagTypeRef) override; + + virtual void showEvent(QShowEvent *event) override; + virtual void hideEvent(QHideEvent *event) override; private Q_SLOTS: void hoverTimerEvent(); diff --git a/ui/tagtypelist.h b/ui/tagtypelist.h index cc7015a9..98ad2305 100644 --- a/ui/tagtypelist.h +++ b/ui/tagtypelist.h @@ -10,14 +10,16 @@ #include "dockhandler.h" #include "viewframe.h" +#define TAGS_UPDATE_CHECK_INTERVAL 200 -class BINARYNINJAUIAPI TagTypeListModel: public QAbstractItemModel +class BINARYNINJAUIAPI TagTypeListModel: public QAbstractItemModel, public BinaryNinja::BinaryDataNotification { Q_OBJECT QWidget* m_owner; BinaryViewRef m_data; std::vector<TagTypeRef> m_refs; + std::map<std::string, uint64_t> m_count; public: TagTypeListModel(QWidget* parent, BinaryViewRef data); @@ -36,7 +38,13 @@ public: virtual void sort(int column, Qt::SortOrder order) override; virtual Qt::ItemFlags flags(const QModelIndex& i) const override; + virtual void OnTagAdded(BinaryNinja::BinaryView*, const BinaryNinja::TagReference&) override; + virtual void OnTagRemoved(BinaryNinja::BinaryView*, const BinaryNinja::TagReference&) override; + bool setModelData(const std::vector<TagTypeRef>& refs, QItemSelectionModel* selectionModel, int sortColumn, Qt::SortOrder sortOrder, bool& selectionUpdated); + +Q_SIGNALS: + void needRepaint(); }; @@ -77,11 +85,15 @@ class BINARYNINJAUIAPI TagTypeList: public QTableView, public DockContextHandler QTimer* m_updateTimer; bool m_needsUpdate; + bool m_needsRepaint; protected: virtual void contextMenuEvent(QContextMenuEvent* event) override; - virtual void OnDataMetadataUpdated(BinaryNinja::BinaryView*, uint64_t) override; + virtual void showEvent(QShowEvent *event) override; + virtual void hideEvent(QHideEvent *event) override; + + virtual void OnTagTypeUpdated(BinaryNinja::BinaryView*, const TagTypeRef) override; private: void createTagType(); @@ -89,6 +101,7 @@ private: private Q_SLOTS: void updateTimerEvent(); + void needRepaint(); public: TagTypeList(QWidget* parent, ViewFrame* view, BinaryViewRef data, Menu* menu = nullptr); diff --git a/ui/tokenizedtextview.h b/ui/tokenizedtextview.h index 95c47666..7ef15ae9 100644 --- a/ui/tokenizedtextview.h +++ b/ui/tokenizedtextview.h @@ -138,6 +138,7 @@ public: virtual void OnDataVariableRemoved(BinaryNinja::BinaryView* view, const BinaryNinja::DataVariable& var) override; virtual void OnDataVariableUpdated(BinaryNinja::BinaryView* view, const BinaryNinja::DataVariable& var) override; virtual void OnDataMetadataUpdated(BinaryNinja::BinaryView* view, uint64_t offset) override; + virtual void OnTagUpdated(BinaryNinja::BinaryView* data, const BinaryNinja::TagReference& tagRef) override; virtual void updateFonts() override; |
