diff --git a/libs/wxutil/dataview/TreeView.cpp b/libs/wxutil/dataview/TreeView.cpp index e473db1838..c0c681c95a 100644 --- a/libs/wxutil/dataview/TreeView.cpp +++ b/libs/wxutil/dataview/TreeView.cpp @@ -257,6 +257,7 @@ void TreeView::_onItemActivated(wxDataViewEvent& ev) if (!IsExpanded(ev.GetItem())) { Expand(ev.GetItem()); + wxQueueEvent( GetParent()->GetEventHandler(), new wxCommandEvent( EV_TREE_DOUBLE_CLICK ) ); } else { @@ -631,4 +632,5 @@ void TreeView::JumpToSearchMatch(const wxDataViewItem& item) } } +wxDEFINE_EVENT( EV_TREE_DOUBLE_CLICK, wxCommandEvent ); } // namespace diff --git a/libs/wxutil/dataview/TreeView.h b/libs/wxutil/dataview/TreeView.h index 1cb1ca9e83..bf6c6d9a49 100644 --- a/libs/wxutil/dataview/TreeView.h +++ b/libs/wxutil/dataview/TreeView.h @@ -101,4 +101,5 @@ class TreeView : void _onItemActivated(wxDataViewEvent& ev); }; +wxDECLARE_EVENT( EV_TREE_DOUBLE_CLICK, wxCommandEvent ); } // namespace diff --git a/radiant/ui/common/ShaderChooser.cpp b/radiant/ui/common/ShaderChooser.cpp index 716ebbf783..ece668f63c 100644 --- a/radiant/ui/common/ShaderChooser.cpp +++ b/radiant/ui/common/ShaderChooser.cpp @@ -38,6 +38,14 @@ ShaderChooser::ShaderChooser(wxWindow* parent, wxTextCtrl* targetEntry) : // Set the cursor of the tree view to the currently selected shader _selector->setSelection(_initialShader); + Bind( wxutil::EV_TREE_DOUBLE_CLICK, [&, this]( wxCommandEvent& ev ) + { + if ( !this->_selector->getSelection().empty() ) { + _targetEntry->SetValue( _selector->getSelection() ); + shutdown(); + EndModal( wxID_OK ); + } + } ); } // Pack in the ShaderSelector and buttons panel