From ffa5bfd73aa775acf2efb20c81ae995417d6d719 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Fri, 26 Jan 2024 20:46:18 -0500 Subject: Use new splitter in panes --- ui/featuremap.h | 5 +++-- ui/pane.h | 8 ++++---- ui/splitter.h | 18 +++++++++++++++++- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/ui/featuremap.h b/ui/featuremap.h index 8a5d3d19..72395862 100644 --- a/ui/featuremap.h +++ b/ui/featuremap.h @@ -50,7 +50,6 @@ class BINARYNINJAUIAPI FeatureMap : public QWidget, public BinaryNinja::BinaryDa size_t m_bvHeight = 0; uint64_t m_bvLength = 0; - int m_defaultWidth = 64; bool m_naturalOrientation; int m_curLocX = 0; @@ -105,7 +104,9 @@ class BINARYNINJAUIAPI FeatureMap : public QWidget, public BinaryNinja::BinaryDa virtual QSize sizeHint() const override; - protected: + static int defaultWidth() { return 64; } + +protected: virtual void contextMenuEvent(QContextMenuEvent* event) override; virtual void mouseMoveEvent(QMouseEvent* event) override; virtual void mousePressEvent(QMouseEvent* event) override; diff --git a/ui/pane.h b/ui/pane.h index f06158a9..4628e6ad 100644 --- a/ui/pane.h +++ b/ui/pane.h @@ -1,12 +1,12 @@ #pragma once #include -#include #include #include #include #include "uicontext.h" #include "clickablelabel.h" +#include "splitter.h" class ViewFrame; class FeatureMap; @@ -322,7 +322,7 @@ class BINARYNINJAUIAPI SplitPaneContainer : public QWidget Q_OBJECT Pane* m_pane = nullptr; - QSplitter* m_splitter = nullptr; + Splitter* m_splitter = nullptr; SplitPaneContainer* m_parent = nullptr; std::vector m_children; Pane* m_currentChild = nullptr; @@ -411,7 +411,7 @@ class BINARYNINJAUIAPI SplitPaneWidget : public QWidget QStackedWidget* m_featureMapContainer; std::map m_featureMaps; - QSplitter* m_featureMapSplitter; + Splitter* m_featureMapSplitter; bool m_rightSideFeatureMap = true; UIActionHandler m_actionHandler; @@ -482,5 +482,5 @@ class BINARYNINJAUIAPI SplitPaneWidget : public QWidget void containerNotifyViewChanged(ViewFrame* frame); void containerLastPaneClosed(); void containerNewWindowForPane(SplitPaneWidget* paneWidget, QRect rect); - void featureMapSplitterMoved(int pos, int idx); + void featureMapSplitterMoved(); }; diff --git a/ui/splitter.h b/ui/splitter.h index 089de444..a26b6a9d 100644 --- a/ui/splitter.h +++ b/ui/splitter.h @@ -97,6 +97,18 @@ public: void restoreState(const QSettings& settings, const QString& stateName); void resetToDefault(); + std::optional sizing(const QString& key) const; + std::optional sizing(QWidget* widget) const; + void setSizing(const QString& key, const SplitterWidgetSizing& sizing); + void setRequestedSize(const QString& key, float size); + void setRequestedSize(QWidget* widget, float size); + + Qt::Orientation orientation() const { return m_orientation; } + void setOrientation(Qt::Orientation orientation); + + QList sizes() const; + void setSizes(const QList& sizes); + protected: virtual void paintEvent(QPaintEvent* event) override; virtual void mousePressEvent(QMouseEvent* event) override; @@ -109,7 +121,8 @@ protected: private: void forAllSplitterHandles(const std::function& func); - void processLayout(const std::function& processPointSizeWidgets, + void processLayout(bool computeFromExisting, + const std::function& processPointSizeWidgets, const std::function& processRelativeSizeWidgets); void getWidgetsForSizingStyle(SplitterWidgetSizingStyle style, std::set& widgets, std::vector& groups); @@ -120,4 +133,7 @@ private: const std::set& widgets, const std::vector& groups, int availableSize); void calculateRequestedSizesForActualLayout(); void updateWidgetPositions(); + +Q_SIGNALS: + void splitterMoved(); }; -- cgit v1.3.1