diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2024-01-26 20:46:18 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2024-02-05 13:42:52 -0500 |
| commit | ffa5bfd73aa775acf2efb20c81ae995417d6d719 (patch) | |
| tree | 9176ad2db8a971143019a028a4860ca695b3de07 | |
| parent | 97ac519092fc87e27c49ab21aafb41b77f40dc03 (diff) | |
Use new splitter in panes
| -rw-r--r-- | ui/featuremap.h | 5 | ||||
| -rw-r--r-- | ui/pane.h | 8 | ||||
| -rw-r--r-- | 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; @@ -1,12 +1,12 @@ #pragma once #include <QtWidgets/QWidget> -#include <QtWidgets/QSplitter> #include <QtWidgets/QStackedWidget> #include <QtWidgets/QVBoxLayout> #include <QtWidgets/QRubberBand> #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<SplitPaneContainer*> m_children; Pane* m_currentChild = nullptr; @@ -411,7 +411,7 @@ class BINARYNINJAUIAPI SplitPaneWidget : public QWidget QStackedWidget* m_featureMapContainer; std::map<BinaryViewRef, FeatureMap*> 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<SplitterWidgetSizing> sizing(const QString& key) const; + std::optional<SplitterWidgetSizing> 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<int> sizes() const; + void setSizes(const QList<int>& 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<void(size_t leftIdx, size_t rightIdx, int pos)>& func); - void processLayout(const std::function<int(int availablePointSize)>& processPointSizeWidgets, + void processLayout(bool computeFromExisting, + const std::function<int(int availablePointSize)>& processPointSizeWidgets, const std::function<void(int availableWidgetSize)>& processRelativeSizeWidgets); void getWidgetsForSizingStyle(SplitterWidgetSizingStyle style, std::set<SplitterWidget*>& widgets, std::vector<GroupInfo>& groups); @@ -120,4 +133,7 @@ private: const std::set<SplitterWidget*>& widgets, const std::vector<GroupInfo>& groups, int availableSize); void calculateRequestedSizesForActualLayout(); void updateWidgetPositions(); + +Q_SIGNALS: + void splitterMoved(); }; |
