summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2026-02-26 09:52:43 -0500
committerBrian Potchik <brian@vector35.com>2026-02-26 09:52:43 -0500
commitb7153854054958c8f362144b59ef05d176c2bb54 (patch)
treeff7d1f78ca00886e50dad618135a66c14a19ca38 /ui
parent2a97a8e0cce77c07df207248ca1ad3055e6733c6 (diff)
Fix settings view layout and resize performance.
Diffstat (limited to 'ui')
-rw-r--r--ui/settingsview.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/ui/settingsview.h b/ui/settingsview.h
index c22f562e..c7c3ff23 100644
--- a/ui/settingsview.h
+++ b/ui/settingsview.h
@@ -186,7 +186,9 @@ class BINARYNINJAUIAPI SettingsEditor : public QWidget
bool m_settingModified = false;
int m_minHeight;
- int m_maxAdjustedWidth;
+ int m_baseHeightForWidth;
+ int m_lastDescWidth = 0;
+ bool m_geometryDirty = false;
std::pair<bool, std::vector<std::pair<std::string, Json::ValueType>>> isObjectSetting(const Json::Value& value);
QTableWidgetItem* getTableItemForValue(const Json::Value& value);
@@ -228,7 +230,6 @@ class BINARYNINJAUIAPI SettingsEditor : public QWidget
public Q_SLOTS:
void updateScope(BinaryViewRef, BNSettingsScope);
- void updateSize();
void notifyGeometryChanged();
void updateViewMode(bool enabled);
@@ -237,6 +238,7 @@ class BINARYNINJAUIAPI SettingsEditor : public QWidget
protected:
bool eventFilter(QObject* obj, QEvent* event) override;
+ void resizeEvent(QResizeEvent* event) override;
void mousePressEvent(QMouseEvent* event) override;
void paintEvent(QPaintEvent* event) override;
};
@@ -263,6 +265,9 @@ class BINARYNINJAUIAPI SettingsDelegate : public QStyledItemDelegate
QTimer* m_updateModelTimer;
QTimer* m_resizeTimer;
QSize m_lastViewportSize;
+ QModelIndex m_scrollAnchorIdx;
+ int m_scrollAnchorOffset = 0;
+ bool m_resizing = false;
QTreeView* m_treeView;
std::function<void(const QModelIndex& index)> m_hoverAction = nullptr;
@@ -290,7 +295,6 @@ class BINARYNINJAUIAPI SettingsDelegate : public QStyledItemDelegate
Q_SIGNALS:
void refreshAllSettings() const;
void scopeChanged(BinaryViewRef, BNSettingsScope);
- void sizeChanged();
void viewModeChanged(bool enabled) const;
void notifyNeedsRestart() const;
void notifySettingChanged(QString settingId) const;
@@ -321,6 +325,7 @@ class BINARYNINJAUIAPI SettingsTreeView : public QTreeView
~SettingsTreeView();
void updateTheme();
+ void scheduleRelayout() { scheduleDelayedItemsLayout(); }
protected:
virtual void resizeEvent(QResizeEvent* event) override;