From b7153854054958c8f362144b59ef05d176c2bb54 Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Thu, 26 Feb 2026 09:52:43 -0500 Subject: Fix settings view layout and resize performance. --- ui/settingsview.h | 11 ++++++++--- 1 file 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>> 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 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; -- cgit v1.3.1