From d915cb780e244e43df2656a7765c52447fa1bf42 Mon Sep 17 00:00:00 2001 From: Mike Williams Date: Wed, 25 Jan 2023 11:09:23 -0500 Subject: [PATCH] Search Pane: add Activation (enter/double click) event support --- common/widgets/search_pane_tab.cpp | 21 ++++++++++++++++++++- include/widgets/search_pane.h | 3 ++- include/widgets/search_pane_tab.h | 3 ++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/common/widgets/search_pane_tab.cpp b/common/widgets/search_pane_tab.cpp index 5f1e8572b7..2fb5aee674 100644 --- a/common/widgets/search_pane_tab.cpp +++ b/common/widgets/search_pane_tab.cpp @@ -33,6 +33,7 @@ SEARCH_PANE_LISTVIEW::SEARCH_PANE_LISTVIEW( SEARCH_HANDLER* handler, wxWindow* p RefreshColumnNames(); Bind( wxEVT_LIST_ITEM_SELECTED, &SEARCH_PANE_LISTVIEW::OnItemSelected, this ); + Bind( wxEVT_LIST_ITEM_ACTIVATED, &SEARCH_PANE_LISTVIEW::OnItemActivated, this ); Bind( wxEVT_LIST_ITEM_FOCUSED, &SEARCH_PANE_LISTVIEW::OnItemSelected, this ); Bind( wxEVT_LIST_ITEM_DESELECTED, &SEARCH_PANE_LISTVIEW::OnItemDeselected, this ); } @@ -41,6 +42,7 @@ SEARCH_PANE_LISTVIEW::SEARCH_PANE_LISTVIEW( SEARCH_HANDLER* handler, wxWindow* p SEARCH_PANE_LISTVIEW::~SEARCH_PANE_LISTVIEW() { Unbind( wxEVT_LIST_ITEM_SELECTED, &SEARCH_PANE_LISTVIEW::OnItemSelected, this ); + Unbind( wxEVT_LIST_ITEM_ACTIVATED, &SEARCH_PANE_LISTVIEW::OnItemActivated, this ); Unbind( wxEVT_LIST_ITEM_FOCUSED, &SEARCH_PANE_LISTVIEW::OnItemSelected, this ); Unbind( wxEVT_LIST_ITEM_DESELECTED, &SEARCH_PANE_LISTVIEW::OnItemDeselected, this ); } @@ -65,6 +67,23 @@ void SEARCH_PANE_LISTVIEW::GetSelectRowsList( std::vector& aSelectedList ) } +void SEARCH_PANE_LISTVIEW::OnItemActivated( wxListEvent& aEvent ) +{ + CallAfter( + [&]() + { + m_handler->ActivateItem( aEvent.GetIndex() ); + + // Reset our selection to match the selected list items + std::vector list; + GetSelectRowsList( list ); + m_handler->SelectItems( list ); + } ); + + aEvent.Skip(); +} + + void SEARCH_PANE_LISTVIEW::OnItemSelected( wxListEvent& aEvent ) { CallAfter( @@ -153,4 +172,4 @@ void SEARCH_PANE_TAB::Clear() void SEARCH_PANE_TAB::RefreshColumnNames() { m_listView->RefreshColumnNames(); -} \ No newline at end of file +} diff --git a/include/widgets/search_pane.h b/include/widgets/search_pane.h index 8469405826..d35d688c21 100644 --- a/include/widgets/search_pane.h +++ b/include/widgets/search_pane.h @@ -40,6 +40,7 @@ public: virtual wxString GetResultCell( int row, int col ) = 0; virtual void SelectItems( std::vector& aItemRows ) {} + virtual void ActivateItem( long aItemRow ) {} protected: wxString m_name; @@ -71,4 +72,4 @@ private: wxString m_lastQuery; }; -#endif \ No newline at end of file +#endif diff --git a/include/widgets/search_pane_tab.h b/include/widgets/search_pane_tab.h index b3f59b4256..713296deb6 100644 --- a/include/widgets/search_pane_tab.h +++ b/include/widgets/search_pane_tab.h @@ -43,6 +43,7 @@ public: protected: wxString OnGetItemText( long item, long column ) const override; void OnItemSelected( wxListEvent& aEvent ); + void OnItemActivated( wxListEvent& aEvent ); void OnItemDeselected( wxListEvent& aEvent ); void GetSelectRowsList( std::vector& aSelectedList ); @@ -70,4 +71,4 @@ private: SEARCH_HANDLER* m_handler; }; -#endif \ No newline at end of file +#endif