summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2022-11-03 16:52:25 -0400
committerPeter LaFosse <peter@vector35.com>2022-11-10 16:19:13 -0500
commitf647755655df27af2e5b55af12e19d06acb76930 (patch)
tree24c66b9c866e3dcfb1390fdba0996767523adced
parentd67d5b63f3a17d10b7b7ca722b7192220447209a (diff)
Add ability to quiesce views not active in a ViewFrame.
-rw-r--r--ui/disassemblyview.h7
-rw-r--r--ui/flowgraphwidget.h4
-rw-r--r--ui/hexeditor.h4
-rw-r--r--ui/linearview.h4
-rw-r--r--ui/sidebar.h6
-rw-r--r--ui/viewframe.h27
6 files changed, 26 insertions, 26 deletions
diff --git a/ui/disassemblyview.h b/ui/disassemblyview.h
index f7cadb2a..54d3a71d 100644
--- a/ui/disassemblyview.h
+++ b/ui/disassemblyview.h
@@ -55,6 +55,8 @@ class BINARYNINJAUIAPI DisassemblyView : public FlowGraphWidget
explicit DisassemblyView(DisassemblyContainer* parent, BinaryViewRef data, FunctionRef func = nullptr,
bool navToAddr = false, uint64_t addr = 0);
+ virtual void notifyRefresh() override;
+
virtual void updateFonts() override;
virtual bool navigate(uint64_t pos) override;
@@ -172,7 +174,6 @@ class BINARYNINJAUIAPI DisassemblyFunctionHeader : public QWidget
FunctionRef m_func;
QProgressIndicator* m_updateIndicator;
- QTimer* m_updateTimer;
GraphTypeLabel* m_graphType = nullptr;
RenderContext m_render;
@@ -182,9 +183,6 @@ class BINARYNINJAUIAPI DisassemblyFunctionHeader : public QWidget
void adjustSize(int width, int height);
- private Q_SLOTS:
- void updateTimerEvent();
-
protected:
virtual void paintEvent(QPaintEvent* event) override;
virtual void resizeEvent(QResizeEvent* event) override;
@@ -199,6 +197,7 @@ class BINARYNINJAUIAPI DisassemblyFunctionHeader : public QWidget
void setCurrentFunction(FunctionRef func);
void setILViewType(BNFunctionGraphType ilViewType);
void setHighlightToken(const HighlightTokenState& state);
+ void notifyRefresh();
virtual QSize sizeHint() const override;
};
diff --git a/ui/flowgraphwidget.h b/ui/flowgraphwidget.h
index 9ee41e65..3d529433 100644
--- a/ui/flowgraphwidget.h
+++ b/ui/flowgraphwidget.h
@@ -100,7 +100,6 @@ class BINARYNINJAUIAPI FlowGraphWidget :
bool m_ready;
QTimer* m_loadingTimer;
- QTimer* m_updateTimer;
QTimer* m_zoomTimer;
QTimer* m_zoomPauseTimer;
@@ -209,6 +208,8 @@ class BINARYNINJAUIAPI FlowGraphWidget :
FlowGraphWidget(QWidget* parent, BinaryViewRef view, FlowGraphRef graph = FlowGraphRef());
~FlowGraphWidget();
+ virtual void notifyRefresh() override;
+
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;
@@ -322,7 +323,6 @@ class BINARYNINJAUIAPI FlowGraphWidget :
private Q_SLOTS:
void loadingTimerEvent();
- void updateTimerEvent();
void hoverTimerEvent();
void zoomTimerEvent();
bool zoomDisabled();
diff --git a/ui/hexeditor.h b/ui/hexeditor.h
index b971a1cb..1a485be9 100644
--- a/ui/hexeditor.h
+++ b/ui/hexeditor.h
@@ -33,6 +33,8 @@ class BINARYNINJAUIAPI HexEditor :
explicit HexEditor(BinaryViewRef data, ViewFrame* view, uint64_t startAddr = 0);
virtual ~HexEditor();
+ virtual void notifyRefresh() override;
+
virtual bool canAssemble() override { return true; }
virtual bool canCompile() override { return true; }
@@ -195,7 +197,6 @@ class BINARYNINJAUIAPI HexEditor :
bool m_insertMode;
QString m_status;
QTimer* m_cursorTimer;
- QTimer* m_updateTimer;
Qt::KeyboardModifiers m_ctrl, m_command;
RenderContext m_render;
@@ -226,7 +227,6 @@ class BINARYNINJAUIAPI HexEditor :
void scrollBarMoved(int value);
void scrollBarAction(int action);
void cursorTimerEvent();
- void updateTimerEvent();
};
/*!
diff --git a/ui/linearview.h b/ui/linearview.h
index 3c5ce9eb..4cf67bdb 100644
--- a/ui/linearview.h
+++ b/ui/linearview.h
@@ -196,7 +196,6 @@ class BINARYNINJAUIAPI LinearView : public QAbstractScrollArea, public View, pub
size_t m_topLine;
std::optional<double> m_topOrderingIndexOffset;
- QTimer* m_updateTimer;
QTimer* m_hoverTimer;
QPointF m_previewPos;
@@ -347,7 +346,6 @@ private Q_SLOTS:
void scrollBarMoved(int value);
void scrollBarAction(int action);
- void updateTimerEvent();
void hoverTimerEvent();
void setStackAdjustment();
@@ -365,6 +363,8 @@ public:
explicit LinearView(BinaryViewRef data, ViewFrame* view);
virtual ~LinearView();
+ virtual void notifyRefresh() override;
+
virtual bool canAssemble() override { return true; }
virtual bool canCompile() override { return true; }
diff --git a/ui/sidebar.h b/ui/sidebar.h
index 79dcb3a8..ead1ca8d 100644
--- a/ui/sidebar.h
+++ b/ui/sidebar.h
@@ -44,11 +44,17 @@ class BINARYNINJAUIAPI SidebarWidget : public QWidget
ContextMenuManager* m_contextMenuManager = nullptr;
Menu* m_menu = nullptr;
+ QTimer* m_updateTimer = nullptr;
+
public:
SidebarWidget(const QString& title);
const QString& title() const { return m_title; }
+ void enableRefreshTimer(int interval);
+ void setRefreshQuiesce(bool enable);
+ virtual void notifyRefresh() {};
+
virtual void notifyFontChanged() {}
virtual void notifyOffsetChanged(uint64_t /*offset*/) {}
virtual void notifyThemeChanged();
diff --git a/ui/viewframe.h b/ui/viewframe.h
index 341caf2e..7be57ed1 100644
--- a/ui/viewframe.h
+++ b/ui/viewframe.h
@@ -121,6 +121,8 @@ class BINARYNINJAUIAPI View
bool m_binaryDataNavigable = false;
QPointer<TransformParameterDialog> m_transformParamDialog;
+ QTimer* m_updateTimer = nullptr;
+
bool writeDataToClipboard(const BinaryNinja::DataBuffer& data, bool binary, TransformRef xform);
BinaryNinja::DataBuffer readDataFromClipboard(TransformRef xform);
@@ -137,6 +139,10 @@ class BINARYNINJAUIAPI View
View();
virtual ~View() {}
+ void enableRefreshTimer(QWidget* owner, int interval);
+ void setRefreshQuiesce(bool enable);
+ virtual void notifyRefresh() {};
+
void setupView(QWidget* widget);
virtual bool canAssemble() { return false; }
@@ -244,16 +250,8 @@ class BINARYNINJAUIAPI View
void forceSyncFromView(ViewFrame* frame = nullptr);
virtual void clearRelatedHighlights() {}
- virtual void setRelatedIndexHighlights(FunctionRef func, const std::set<size_t>& related)
- {
- (void)func;
- (void)related;
- }
- virtual void setRelatedInstructionHighlights(FunctionRef func, const std::set<uint64_t>& related)
- {
- (void)func;
- (void)related;
- }
+ virtual void setRelatedIndexHighlights(FunctionRef func, const std::set<size_t>& related) { (void)func; (void)related; }
+ virtual void setRelatedInstructionHighlights(FunctionRef func, const std::set<uint64_t>& related) { (void)func; (void)related; }
static void registerActions();
static void registerLateActions();
@@ -441,14 +439,11 @@ class BINARYNINJAUIAPI ViewFrame : public QWidget
}
bool navigate(const QString& type, uint64_t offset, bool updateInfo = true, bool addHistoryEntry = true);
- bool navigate(const QString& type, const std::function<bool(View*)>& handler, bool updateInfo = true,
- bool addHistoryEntry = true);
+ bool navigate(const QString& type, const std::function<bool(View*)>& handler, bool updateInfo = true, bool addHistoryEntry = true);
bool navigate(BinaryViewRef data, uint64_t offset, bool updateInfo = true, bool addHistoryEntry = true);
bool navigateToFunction(FunctionRef func, uint64_t offset, bool updateInfo = true, bool addHistoryEntry = true);
- bool goToReference(
- BinaryViewRef data, FunctionRef func, uint64_t source, uint64_t target, bool addHistoryEntry = true);
- bool navigateToViewLocation(
- BinaryViewRef data, const ViewLocation& viewLocation, bool addHistoryEntry = true, bool center = false);
+ bool goToReference(BinaryViewRef data, FunctionRef func, uint64_t source, uint64_t target, bool addHistoryEntry = true);
+ bool navigateToViewLocation(BinaryViewRef data, const ViewLocation& viewLocation, bool addHistoryEntry = true, bool center = false);
bool navigateToHistoryEntry(BinaryNinja::Ref<HistoryEntry> entry);
QString getTypeForView(QWidget* view) const;
QString getDataTypeForView(const QString& type) const;