From 40f9a59255a808e5c8f9e50a8773dae42845ca23 Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Tue, 6 Dec 2022 08:06:16 -0500 Subject: [PATCH] Remove disconnects from SetControl These aren't needed as the control is going to be destroyed by the grid, and can cause a crash on exit if the control is destroyed before the unit binder. --- common/widgets/unit_binder.cpp | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/common/widgets/unit_binder.cpp b/common/widgets/unit_binder.cpp index 866d49d3d8..bd71f8fbca 100644 --- a/common/widgets/unit_binder.cpp +++ b/common/widgets/unit_binder.cpp @@ -622,26 +622,13 @@ PROPERTY_EDITOR_UNIT_BINDER::~PROPERTY_EDITOR_UNIT_BINDER() void PROPERTY_EDITOR_UNIT_BINDER::SetControl( wxWindow* aControl ) { - if( m_valueCtrl ) - { - m_valueCtrl->Disconnect( wxEVT_SET_FOCUS, wxFocusEventHandler( PROPERTY_EDITOR_UNIT_BINDER::onSetFocus ), - nullptr, this ); - m_valueCtrl->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( PROPERTY_EDITOR_UNIT_BINDER::onKillFocus ), - nullptr, this ); - m_valueCtrl->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PROPERTY_EDITOR_UNIT_BINDER::onClick ), - nullptr, this ); - } - m_valueCtrl = aControl; if( m_valueCtrl ) { - m_valueCtrl->Connect( wxEVT_SET_FOCUS, wxFocusEventHandler( PROPERTY_EDITOR_UNIT_BINDER::onSetFocus ), - nullptr, this ); - m_valueCtrl->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( PROPERTY_EDITOR_UNIT_BINDER::onKillFocus ), - nullptr, this ); - m_valueCtrl->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PROPERTY_EDITOR_UNIT_BINDER::onClick ), - nullptr, this ); + m_valueCtrl->Bind( wxEVT_SET_FOCUS, &PROPERTY_EDITOR_UNIT_BINDER::onSetFocus, this ); + m_valueCtrl->Bind( wxEVT_KILL_FOCUS, &PROPERTY_EDITOR_UNIT_BINDER::onKillFocus, this ); + m_valueCtrl->Bind( wxEVT_LEFT_UP, &PROPERTY_EDITOR_UNIT_BINDER::onClick, this ); m_valueCtrl->Bind( wxEVT_SHOW, [&]( wxShowEvent& e )