From e816f5c736124307fe587f3fcf3524e699a0f4c1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 11 Jan 2007 01:45:31 +0000 Subject: [PATCH] fix lack of spin control update event when control lost focus (replaces patch 1630906, corrects bug introduced in rev 1.66) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 7 +++++++ src/msw/spinctrl.cpp | 30 +++++++++++++++--------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 6352793634..2e43c330b5 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -88,6 +88,13 @@ Major new features in 2.8 release wxSearchCtrl, wxAboutBox, wxTreebook, tar streams. +2.8.2 +----- + +wxMSW + +- Fix lack of spin control update event when control lost focus + 2.8.1 ----- diff --git a/src/msw/spinctrl.cpp b/src/msw/spinctrl.cpp index 80d15e665b..d8368999a9 100644 --- a/src/msw/spinctrl.cpp +++ b/src/msw/spinctrl.cpp @@ -111,7 +111,6 @@ wxCONSTRUCTOR_6( wxSpinCtrl , wxWindow* , Parent , wxWindowID , Id , wxString , IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl) #endif -//pmg EVT_KILL_FOCUS BEGIN_EVENT_TABLE(wxSpinCtrl, wxSpinButton) EVT_CHAR(wxSpinCtrl::OnChar) @@ -269,16 +268,17 @@ void wxSpinCtrl::OnSetFocus(wxFocusEvent& event) void wxSpinCtrl::NormalizeValue() { - int value = GetValue(); - SetValue( value ); - if (value != m_oldValue) - { - wxCommandEvent event( wxEVT_COMMAND_SPINCTRL_UPDATED, GetId() ); - event.SetEventObject( this ); - event.SetInt( value ); - GetEventHandler()->ProcessEvent( event ); - m_oldValue = value; - } + const int value = GetValue(); + if ( value == m_oldValue ) + return; + + SetValue(value); + + wxCommandEvent event(wxEVT_COMMAND_SPINCTRL_UPDATED, GetId()); + event.SetEventObject(this); + event.SetInt(value); + GetEventHandler()->ProcessEvent(event); + m_oldValue = value; } // ---------------------------------------------------------------------------- @@ -368,7 +368,7 @@ bool wxSpinCtrl::Create(wxWindow *parent, SetRange(min, max); SetValue(initial); - + m_oldValue = initial; // subclass the text ctrl to be able to intercept some events @@ -449,7 +449,7 @@ void wxSpinCtrl::SetValue(int val) // current value in the control, so do it manually ::SetWindowText(GetBuddyHwnd(), wxString::Format(_T("%d"), val)); } - + m_oldValue = GetValue(); } @@ -550,7 +550,7 @@ void wxSpinCtrl::OnSpinChange(wxSpinEvent& eventSpin) event.SetEventObject(this); int value = eventSpin.GetPosition(); event.SetInt( value ); - + if (value != m_oldValue) (void)GetEventHandler()->ProcessEvent(event); @@ -558,7 +558,7 @@ void wxSpinCtrl::OnSpinChange(wxSpinEvent& eventSpin) { event.Skip(); } - + m_oldValue = value; } -- 2.45.2