From bf712f05ac02984c9277ec17930ea3d8bd886ef5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 10 Apr 2015 16:33:34 +0200 Subject: [PATCH] Generate wxEVT_SPINCTRL of the correct wxSpinEvent type. Handlers for this event expect to get wxSpinEvent but wxMSW, wxGTK1 and wxQT sent an object of base wxCommandEvent class which resulted in invalid memory access in the handlers when using the derived class methods such as Veto(). Closes #16948. --- src/common/event.cpp | 2 -- src/gtk1/spinctrl.cpp | 2 +- src/msw/spinctrl.cpp | 2 +- src/qt/spinctrl.cpp | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/common/event.cpp b/src/common/event.cpp index 9883e0422d..ab6b0f137f 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -179,8 +179,6 @@ wxDEFINE_EVENT( wxEVT_VLBOX, wxCommandEvent ); wxDEFINE_EVENT( wxEVT_COMBOBOX, wxCommandEvent ); wxDEFINE_EVENT( wxEVT_TOOL_RCLICKED, wxCommandEvent ); wxDEFINE_EVENT( wxEVT_TOOL_ENTER, wxCommandEvent ); -wxDEFINE_EVENT( wxEVT_SPINCTRL, wxCommandEvent ); -wxDEFINE_EVENT( wxEVT_SPINCTRLDOUBLE, wxCommandEvent ); wxDEFINE_EVENT( wxEVT_TOOL_DROPDOWN, wxCommandEvent ); wxDEFINE_EVENT( wxEVT_COMBOBOX_DROPDOWN, wxCommandEvent); wxDEFINE_EVENT( wxEVT_COMBOBOX_CLOSEUP, wxCommandEvent); diff --git a/src/gtk1/spinctrl.cpp b/src/gtk1/spinctrl.cpp index e37bd6737f..79de856b28 100644 --- a/src/gtk1/spinctrl.cpp +++ b/src/gtk1/spinctrl.cpp @@ -82,7 +82,7 @@ static void gtk_spinctrl_callback( GtkWidget *WXUNUSED(widget), wxSpinCtrl *win if (!win->m_hasVMT) return; if (g_blockEventsOnDrag) return; - wxCommandEvent event( wxEVT_SPINCTRL, win->GetId()); + wxSpinEvent event( wxEVT_SPINCTRL, win->GetId()); event.SetEventObject( win ); // note that we don't use wxSpinCtrl::GetValue() here because it would diff --git a/src/msw/spinctrl.cpp b/src/msw/spinctrl.cpp index 3346eb3ba0..4623cacc96 100644 --- a/src/msw/spinctrl.cpp +++ b/src/msw/spinctrl.cpp @@ -684,7 +684,7 @@ void wxSpinCtrl::DoSetToolTip(wxToolTip *tip) void wxSpinCtrl::SendSpinUpdate(int value) { - wxCommandEvent event(wxEVT_SPINCTRL, GetId()); + wxSpinEvent event(wxEVT_SPINCTRL, GetId()); event.SetEventObject(this); event.SetInt(value); diff --git a/src/qt/spinctrl.cpp b/src/qt/spinctrl.cpp index edf77f7305..de7dfd94d3 100644 --- a/src/qt/spinctrl.cpp +++ b/src/qt/spinctrl.cpp @@ -217,7 +217,7 @@ void wxQtSpinBox::valueChanged(int value) wxControl *handler = GetHandler(); if ( handler ) { - wxCommandEvent event( wxEVT_SPINCTRL, handler->GetId() ); + wxSpinEvent event( wxEVT_SPINCTRL, handler->GetId() ); event.SetInt( value ); EmitEvent( event ); }