summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2024-01-26 20:46:18 -0500
committerRusty Wagner <rusty.wagner@gmail.com>2024-02-05 13:42:52 -0500
commitffa5bfd73aa775acf2efb20c81ae995417d6d719 (patch)
tree9176ad2db8a971143019a028a4860ca695b3de07
parent97ac519092fc87e27c49ab21aafb41b77f40dc03 (diff)
Use new splitter in panes
-rw-r--r--ui/featuremap.h5
-rw-r--r--ui/pane.h8
-rw-r--r--ui/splitter.h18
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 <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();
};