summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2024-02-01 18:31:40 -0500
committerRusty Wagner <rusty.wagner@gmail.com>2024-02-05 13:42:52 -0500
commitacbb7d86058e9603334a4d61807c1e06f59cdbd5 (patch)
treeeb9db95ec4d4a58d1079b87bf6156437a1208421
parentd6d462bd9b11377d896e2b68444c89aa3dce05ff (diff)
Use per view type context sensitivity for most sidebar widgets to significantly reduce resource usage when multiple panes are open
-rw-r--r--ui/memorymap.h9
-rw-r--r--ui/stringsview.h9
-rw-r--r--ui/tabwidget.h3
-rw-r--r--ui/taglist.h2
-rw-r--r--ui/typebrowser.h10
5 files changed, 16 insertions, 17 deletions
diff --git a/ui/memorymap.h b/ui/memorymap.h
index 98cbbd04..8e9df680 100644
--- a/ui/memorymap.h
+++ b/ui/memorymap.h
@@ -195,7 +195,6 @@ class BINARYNINJAUIAPI MemoryMapView : public QWidget, public View
Q_OBJECT
BinaryViewRef m_data;
- ViewFrame* m_view;
MemoryMapContainer* m_container;
SectionWidget* m_sectionWidget;
@@ -207,7 +206,7 @@ class BINARYNINJAUIAPI MemoryMapView : public QWidget, public View
void navigateToRawAddress(uint64_t address);
public:
- MemoryMapView(BinaryViewRef data, ViewFrame* view, MemoryMapContainer* container);
+ MemoryMapView(BinaryViewRef data, MemoryMapContainer* container);
BinaryViewRef getData() override { return m_data; }
uint64_t getCurrentOffset() override;
@@ -231,12 +230,11 @@ class BINARYNINJAUIAPI MemoryMapContainer : public QWidget, public ViewContainer
friend class StringsView;
- ViewFrame* m_view;
MemoryMapView* m_memoryMap;
MemoryMapSidebarWidget* m_widget;
public:
- MemoryMapContainer(BinaryViewRef data, ViewFrame* view, MemoryMapSidebarWidget* parent);
+ MemoryMapContainer(BinaryViewRef data, MemoryMapSidebarWidget* parent);
virtual View* getView() override { return m_memoryMap; }
MemoryMapView* getMemoryMapView() { return m_memoryMap; }
@@ -273,7 +271,7 @@ Q_OBJECT
MemoryMapContainer* m_container;
public:
- MemoryMapSidebarWidget(BinaryViewRef data, ViewFrame* frame);
+ MemoryMapSidebarWidget(BinaryViewRef data);
void focus() override;
};
@@ -286,6 +284,7 @@ class BINARYNINJAUIAPI MemoryMapSidebarWidgetType : public SidebarWidgetType
public:
MemoryMapSidebarWidgetType();
SidebarWidgetLocation defaultLocation() const override { return SidebarWidgetLocation::LeftContent; }
+ SidebarContextSensitivity contextSensitivity() const override { return PerViewTypeSidebarContext; }
SidebarWidget* createWidget(ViewFrame* frame, BinaryViewRef data) override;
virtual bool canUseAsPane(SplitPaneWidget*, BinaryViewRef) const override { return true; }
virtual Pane* createPane(SplitPaneWidget* panes, BinaryViewRef data) override;
diff --git a/ui/stringsview.h b/ui/stringsview.h
index e2db0ef5..d440a811 100644
--- a/ui/stringsview.h
+++ b/ui/stringsview.h
@@ -126,7 +126,6 @@ class BINARYNINJAUIAPI StringsView : public QListView, public View, public Filte
Q_OBJECT
BinaryViewRef m_data;
- ViewFrame* m_view;
StringsContainer* m_container;
RenderContext m_render;
@@ -139,7 +138,7 @@ class BINARYNINJAUIAPI StringsView : public QListView, public View, public Filte
uint64_t m_currentlySelectedDataAddress;
public:
- StringsView(BinaryViewRef data, ViewFrame* view, StringsContainer* container);
+ StringsView(BinaryViewRef data, StringsContainer* container);
virtual BinaryViewRef getData() override { return m_data; }
virtual uint64_t getCurrentOffset() override;
@@ -195,14 +194,13 @@ class BINARYNINJAUIAPI StringsContainer : public QWidget, public ViewContainer
friend class StringsView;
- ViewFrame* m_view;
StringsView* m_strings;
FilteredView* m_filter;
FilterEdit* m_separateEdit = nullptr;
StringsViewSidebarWidget* m_widget;
public:
- StringsContainer(BinaryViewRef data, ViewFrame* view, StringsViewSidebarWidget* parent, bool separateEdit = false);
+ StringsContainer(BinaryViewRef data, StringsViewSidebarWidget* parent, bool separateEdit = false);
virtual View* getView() override { return m_strings; }
StringsView* getStringsView() { return m_strings; }
@@ -242,7 +240,7 @@ class BINARYNINJAUIAPI StringsViewSidebarWidget : public SidebarWidget
StringsContainer* m_container;
public:
- StringsViewSidebarWidget(BinaryViewRef data, ViewFrame* frame);
+ StringsViewSidebarWidget(BinaryViewRef data);
virtual QWidget* headerWidget() override { return m_header; }
virtual void focus() override;
@@ -262,6 +260,7 @@ class BINARYNINJAUIAPI StringsViewSidebarWidgetType : public SidebarWidgetType
public:
StringsViewSidebarWidgetType();
SidebarWidgetLocation defaultLocation() const override { return SidebarWidgetLocation::RightBottom; }
+ SidebarContextSensitivity contextSensitivity() const override { return PerViewTypeSidebarContext; }
virtual SidebarWidget* createWidget(ViewFrame* frame, BinaryViewRef data) override;
virtual bool canUseAsPane(SplitPaneWidget*, BinaryViewRef) const override { return true; }
virtual Pane* createPane(SplitPaneWidget* panes, BinaryViewRef data) override;
diff --git a/ui/tabwidget.h b/ui/tabwidget.h
index 81783b88..dad3d2ca 100644
--- a/ui/tabwidget.h
+++ b/ui/tabwidget.h
@@ -11,6 +11,7 @@
#include <QtGui/QMouseEvent>
#include "uitypes.h"
#include "json/json.h"
+#include "splitter.h"
class DockableTabWidget;
@@ -356,7 +357,7 @@ class BINARYNINJAUIAPI SplitTabWidget : public QWidget
Q_OBJECT
DockableTabWidget* m_tabs = nullptr;
- QSplitter* m_splitter = nullptr;
+ Splitter* m_splitter = nullptr;
SplitTabWidget* m_first = nullptr;
SplitTabWidget* m_second = nullptr;
QVBoxLayout* m_layout;
diff --git a/ui/taglist.h b/ui/taglist.h
index 71f5a00d..a0486804 100644
--- a/ui/taglist.h
+++ b/ui/taglist.h
@@ -280,4 +280,6 @@ class BINARYNINJAUIAPI TagListSidebarWidgetType : public SidebarWidgetType
public:
TagListSidebarWidgetType();
virtual SidebarWidget* createWidget(ViewFrame* frame, BinaryViewRef data) override;
+ SidebarWidgetLocation defaultLocation() const override { return SidebarWidgetLocation::LeftContent; }
+ SidebarContextSensitivity contextSensitivity() const override { return PerViewTypeSidebarContext; }
};
diff --git a/ui/typebrowser.h b/ui/typebrowser.h
index 783de834..b17a73ad 100644
--- a/ui/typebrowser.h
+++ b/ui/typebrowser.h
@@ -319,7 +319,6 @@ struct BINARYNINJAUIAPI TypeReference
class BINARYNINJAUIAPI TypeBrowserView : public QFrame, public View, public FilterTarget
{
Q_OBJECT
- ViewFrame* m_frame;
BinaryViewRef m_data;
class TypeBrowserContainer* m_container;
ContextMenuManager* m_contextMenuManager;
@@ -342,7 +341,7 @@ class BINARYNINJAUIAPI TypeBrowserView : public QFrame, public View, public Filt
QTextEdit* m_debugText;
public:
- TypeBrowserView(ViewFrame* frame, BinaryViewRef data, TypeBrowserContainer* container);
+ TypeBrowserView(BinaryViewRef data, TypeBrowserContainer* container);
TypeBrowserContainer* getContainer() { return m_container; }
TypeBrowserModel* getModel() { return m_model; }
@@ -460,7 +459,6 @@ class BINARYNINJAUIAPI TypeBrowserContainer : public QWidget, public ViewContain
{
Q_OBJECT
- ViewFrame* m_frame;
BinaryViewRef m_data;
TypeBrowserView* m_view;
FilteredView* m_filter;
@@ -469,10 +467,9 @@ class BINARYNINJAUIAPI TypeBrowserContainer : public QWidget, public ViewContain
UIActionHandler m_actionHandler;
public:
- TypeBrowserContainer(ViewFrame* frame, BinaryViewRef data, class TypeBrowserSidebarWidget* parent);
+ TypeBrowserContainer(BinaryViewRef data, class TypeBrowserSidebarWidget* parent);
virtual View* getView() override { return m_view; }
- ViewFrame* getViewFrame() { return m_frame; }
BinaryViewRef getData() { return m_data; }
TypeBrowserView* getTypeBrowserView() { return m_view; }
FilteredView* getFilter() { return m_filter; }
@@ -505,7 +502,7 @@ class BINARYNINJAUIAPI TypeBrowserSidebarWidget : public SidebarWidget
TypeBrowserContainer* m_container;
public:
- TypeBrowserSidebarWidget(ViewFrame* frame, BinaryViewRef data);
+ TypeBrowserSidebarWidget(BinaryViewRef data);
TypeBrowserContainer* container() { return m_container; }
virtual QWidget* headerWidget() override { return m_header; }
virtual void focus() override;
@@ -526,6 +523,7 @@ public:
virtual SidebarWidget* createWidget(ViewFrame* frame, BinaryViewRef data) override;
SidebarWidgetLocation defaultLocation() const override { return SidebarWidgetLocation::LeftContent; }
+ SidebarContextSensitivity contextSensitivity() const override { return PerViewTypeSidebarContext; }
virtual bool canUseAsPane(SplitPaneWidget*, BinaryViewRef) const override { return true; }
virtual Pane* createPane(SplitPaneWidget* panes, BinaryViewRef data) override;
};