diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2024-02-01 18:31:40 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2024-02-05 13:42:52 -0500 |
| commit | acbb7d86058e9603334a4d61807c1e06f59cdbd5 (patch) | |
| tree | eb9db95ec4d4a58d1079b87bf6156437a1208421 | |
| parent | d6d462bd9b11377d896e2b68444c89aa3dce05ff (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.h | 9 | ||||
| -rw-r--r-- | ui/stringsview.h | 9 | ||||
| -rw-r--r-- | ui/tabwidget.h | 3 | ||||
| -rw-r--r-- | ui/taglist.h | 2 | ||||
| -rw-r--r-- | ui/typebrowser.h | 10 |
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; }; |
