From c08ddcab02433cb5078b6cfea11bf972e47b3169 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Wed, 2 Jun 2021 11:27:24 -0400 Subject: Add sidebar and move some dock widgets to it --- ui/xreflist.h | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'ui/xreflist.h') diff --git a/ui/xreflist.h b/ui/xreflist.h index d603c599..403178f2 100644 --- a/ui/xreflist.h +++ b/ui/xreflist.h @@ -20,7 +20,7 @@ #include #include "binaryninjaapi.h" -#include "dockhandler.h" +#include "sidebar.h" #include "viewframe.h" #include "fontsettings.h" #include "expandablegroup.h" @@ -452,10 +452,9 @@ Q_SIGNALS: class ExpandableGroup; class QCheckboxCombo; -class BINARYNINJAUIAPI CrossReferenceWidget: public QWidget, public DockContextHandler +class BINARYNINJAUIAPI CrossReferenceWidget: public SidebarWidget, public UIContextNotification { Q_OBJECT - Q_INTERFACES(DockContextHandler) ViewFrame* m_view; BinaryViewRef m_data; @@ -488,11 +487,12 @@ class BINARYNINJAUIAPI CrossReferenceWidget: public QWidget, public DockContextH public: CrossReferenceWidget(ViewFrame* view, BinaryViewRef data, bool pinned); + virtual ~CrossReferenceWidget(); virtual void notifyFontChanged() override; - virtual bool shouldBeVisible(ViewFrame* frame) override; virtual QString getHeaderText(SelectionInfoForXref selectionInfo); virtual void setCurrentSelection(SelectionInfoForXref selectionInfo); + virtual void updateCrossReferences(); virtual void setCurrentPinnedSelection(SelectionInfoForXref selectionInfo); void updatePinnedSelection(); virtual void navigateToNext(); @@ -510,6 +510,11 @@ public: bool uiMaxItemsExceeded() const { return m_uiMaxItemsExceeded; } void setUIMaxItemsExceeded(bool value) { m_uiMaxItemsExceeded = value; } + virtual void focus() override; + + virtual void OnNewSelectionForXref(UIContext* context, ViewFrame* frame, View* view, + const SelectionInfoForXref& selection) override; + private Q_SLOTS: void hoverTimerEvent(); @@ -522,6 +527,15 @@ public Q_SLOTS: }; +class BINARYNINJAUIAPI CrossReferenceSidebarWidgetType: public SidebarWidgetType +{ +public: + CrossReferenceSidebarWidgetType(); + virtual bool isInReferenceArea() const override { return true; } + virtual SidebarWidget* createWidget(ViewFrame* frame, BinaryViewRef data) override; +}; + + // https://github.com/CuriousCrow/QCheckboxCombo /* * QCheckboxCombo is a combobox widget that contains items with checkboxes -- cgit v1.3.1