summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2019-09-19 17:31:44 -0400
committerPeter LaFosse <peter@vector35.com>2019-09-27 21:07:22 -0400
commit052b1ea7871c3bfd780a73bcac942db54c95422e (patch)
tree23b72e1461868c096580ae3f6ebe02d4add06d26 /ui
parentbafb7665495735a758caf1d6334577bc0860c5d8 (diff)
Tag notifications & tag type list optimized
Diffstat (limited to 'ui')
-rw-r--r--ui/flowgraphwidget.h1
-rw-r--r--ui/linearview.h1
-rw-r--r--ui/taglist.h8
-rw-r--r--ui/tagtypelist.h17
-rw-r--r--ui/tokenizedtextview.h1
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;