diff options
| author | Mark Rowe <mark@vector35.com> | 2025-10-24 08:21:26 -0700 |
|---|---|---|
| committer | Mark Rowe <mark@vector35.com> | 2025-11-04 16:04:04 -0800 |
| commit | ade58079a0a3e6b9d1a0793ab4c084d0f9431f4d (patch) | |
| tree | 1970e1e26858163d24d1359908b529f363789034 /ui | |
| parent | 63ef49621522efa11e1fcfc709812adb0300d3f6 (diff) | |
Update FilterEdit and FilterTarget to preserve existing selections
The down and enter keys now preserve an existing selection in the
associated list or table views, rather than unconditionally selecting or
activating the first item.
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/bndbimportdialog.h | 4 | ||||
| -rw-r--r-- | ui/filter.h | 12 | ||||
| -rw-r--r-- | ui/logview.h | 4 | ||||
| -rw-r--r-- | ui/metadatachoicedialog.h | 4 | ||||
| -rw-r--r-- | ui/projectbrowser.h | 8 | ||||
| -rw-r--r-- | ui/searchresult.h | 4 | ||||
| -rw-r--r-- | ui/stringsview.h | 4 | ||||
| -rw-r--r-- | ui/symbollist.h | 4 | ||||
| -rw-r--r-- | ui/taglist.h | 8 | ||||
| -rw-r--r-- | ui/typebrowser.h | 4 | ||||
| -rw-r--r-- | ui/variablelist.h | 4 |
11 files changed, 34 insertions, 26 deletions
diff --git a/ui/bndbimportdialog.h b/ui/bndbimportdialog.h index 64030fbe..eb8f0dfd 100644 --- a/ui/bndbimportdialog.h +++ b/ui/bndbimportdialog.h @@ -120,7 +120,7 @@ public: void setFilter(const std::string& filter) override; void scrollToFirstItem() override; void scrollToCurrentItem() override; - void selectFirstItem() override; - void activateFirstItem() override; + void ensureSelection() override; + void activateSelection() override; void closeFilter() override; }; diff --git a/ui/filter.h b/ui/filter.h index c354546f..98417f65 100644 --- a/ui/filter.h +++ b/ui/filter.h @@ -22,8 +22,16 @@ class BINARYNINJAUIAPI FilterTarget virtual void setFilter(const std::string& filter) = 0; virtual void scrollToFirstItem() = 0; virtual void scrollToCurrentItem() = 0; - virtual void selectFirstItem() = 0; - virtual void activateFirstItem() = 0; + + // Select an item, typically the first, if none is already selected. + virtual void ensureSelection() = 0; + + // Activate the selected item, typically in response to the user + // pressing the return key. + virtual void activateSelection() = 0; + + // Transfer focus away from the `FilterEdit`. By default, focus + // is transferred to `this` if it is an instance of `QWidget`. virtual void closeFilter(); }; diff --git a/ui/logview.h b/ui/logview.h index 36016ff8..0aaf9372 100644 --- a/ui/logview.h +++ b/ui/logview.h @@ -276,8 +276,8 @@ class BINARYNINJAUIAPI LogView : public SidebarWidget, public FilterTarget void scrollToFirstItem() override; void scrollToCurrentItem() override; - void selectFirstItem() override; - void activateFirstItem() override {} + void ensureSelection() override; + void activateSelection() override {} void closeFilter() override; // std::pair<size_t, size_t> GetSelectionIndexAndOffsetFromPosition(const QPoint& position) const; diff --git a/ui/metadatachoicedialog.h b/ui/metadatachoicedialog.h index b34dccdc..12de4a55 100644 --- a/ui/metadatachoicedialog.h +++ b/ui/metadatachoicedialog.h @@ -91,8 +91,8 @@ public: virtual void setFilter(const std::string& filter) override; virtual void scrollToFirstItem() override; virtual void scrollToCurrentItem() override; - virtual void selectFirstItem() override; - virtual void activateFirstItem() override; + virtual void ensureSelection() override; + virtual void activateSelection() override; virtual void focusInEvent(QFocusEvent *event) override; bool focusNextPrevChild(bool next) override; diff --git a/ui/projectbrowser.h b/ui/projectbrowser.h index f4f9bd4c..11e14058 100644 --- a/ui/projectbrowser.h +++ b/ui/projectbrowser.h @@ -175,8 +175,8 @@ class BINARYNINJAUIAPI ProjectTree: public QTreeView, public FilterTarget virtual void scrollToFirstItem() override; virtual void scrollToCurrentItem() override; - virtual void selectFirstItem() override; - virtual void activateFirstItem() override; + virtual void ensureSelection() override; + virtual void activateSelection() override; virtual void setFilter(const std::string& filter) override; protected: @@ -198,8 +198,8 @@ class BINARYNINJAUIAPI RecentsList: public QListWidget, public FilterTarget virtual void scrollToFirstItem() override; virtual void scrollToCurrentItem() override; - virtual void selectFirstItem() override; - virtual void activateFirstItem() override; + virtual void ensureSelection() override; + virtual void activateSelection() override; virtual void setFilter(const std::string& filter) override; public: diff --git a/ui/searchresult.h b/ui/searchresult.h index 48c67de1..a4f6d6a0 100644 --- a/ui/searchresult.h +++ b/ui/searchresult.h @@ -325,8 +325,8 @@ public: virtual void setFilter(const std::string&) override {} virtual void scrollToFirstItem() override {} virtual void scrollToCurrentItem() override {} - virtual void selectFirstItem() override {} - virtual void activateFirstItem() override; + virtual void ensureSelection() override {} + virtual void activateSelection() override; protected: virtual void keyPressEvent(QKeyEvent* e) override; diff --git a/ui/stringsview.h b/ui/stringsview.h index 1df0d5f7..e745d28d 100644 --- a/ui/stringsview.h +++ b/ui/stringsview.h @@ -211,8 +211,8 @@ class BINARYNINJAUIAPI StringsView : public TableViewBase, public View, public F virtual void setFilter(const std::string& filter) override; virtual void scrollToFirstItem() override; virtual void scrollToCurrentItem() override; - virtual void selectFirstItem() override; - virtual void activateFirstItem() override; + virtual void ensureSelection() override; + virtual void activateSelection() override; virtual QFont getFont() override { return m_itemDelegate->getFont(); } bool getIncludeStringsOverlappingCode() const { return m_list->getIncludeStringsOverlappingCode(); }; diff --git a/ui/symbollist.h b/ui/symbollist.h index 21faa2ba..1bc4a6dd 100644 --- a/ui/symbollist.h +++ b/ui/symbollist.h @@ -359,8 +359,8 @@ class BINARYNINJAUIAPI SymbolList : public QListView, public FilterTarget virtual void scrollToFirstItem() override; virtual void scrollToCurrentItem() override; - virtual void selectFirstItem() override; - virtual void activateFirstItem() override; + virtual void ensureSelection() override; + virtual void activateSelection() override; virtual void setFilter(const std::string& filter) override; bool hasSymbols(); diff --git a/ui/taglist.h b/ui/taglist.h index e5b9f177..1f1e09cb 100644 --- a/ui/taglist.h +++ b/ui/taglist.h @@ -193,10 +193,10 @@ class BINARYNINJAUIAPI TagList : public QTreeView, public FilterTarget void navigateToNext(); void navigateToPrev(); - void scrollToFirstItem() override; - void scrollToCurrentItem() override; - void selectFirstItem() override; - void activateFirstItem() override; + virtual void scrollToFirstItem() override; + virtual void scrollToCurrentItem() override; + virtual void ensureSelection() override; + virtual void activateSelection() override; }; /*! diff --git a/ui/typebrowser.h b/ui/typebrowser.h index c8b630c7..d12966c2 100644 --- a/ui/typebrowser.h +++ b/ui/typebrowser.h @@ -438,8 +438,8 @@ public: virtual void setFilter(const std::string& filter) override; virtual void scrollToFirstItem() override; virtual void scrollToCurrentItem() override; - virtual void selectFirstItem() override; - virtual void activateFirstItem() override; + virtual void ensureSelection() override; + virtual void activateSelection() override; virtual void notifyRefresh() override; diff --git a/ui/variablelist.h b/ui/variablelist.h index 93e2cf7a..43e6b65c 100644 --- a/ui/variablelist.h +++ b/ui/variablelist.h @@ -257,8 +257,8 @@ class BINARYNINJAUIAPI VariableList : public SidebarWidget, public FilterTarget virtual void setFilter(const std::string& filter) override; virtual void scrollToFirstItem() override; virtual void scrollToCurrentItem() override; - virtual void selectFirstItem() override; - virtual void activateFirstItem() override; + virtual void ensureSelection() override; + virtual void activateSelection() override; }; /*! The main variable list dock widget. |
