no changes, just refactor the code sending spin update event to SendSpinUpdate() instead of duplicating it; also initialize m_oldValue
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44196 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
b6d8301814
commit
d40e9e06bb
@ -99,14 +99,22 @@ protected:
|
||||
// the handler for wxSpinButton events
|
||||
void OnSpinChange(wxSpinEvent& event);
|
||||
|
||||
// Handle processing of special keys
|
||||
// handle processing of special keys
|
||||
void OnChar(wxKeyEvent& event);
|
||||
void OnSetFocus(wxFocusEvent& event);
|
||||
void OnKillFocus(wxFocusEvent& event);
|
||||
|
||||
int m_oldValue;
|
||||
// generate spin control update event with the given value
|
||||
void SendSpinUpdate(int value);
|
||||
|
||||
// called to ensure that the value is in the correct range
|
||||
virtual void NormalizeValue();
|
||||
|
||||
|
||||
|
||||
// the value of the control before the latest change (which might not have
|
||||
// changed anything in fact -- this is why we need this field)
|
||||
int m_oldValue;
|
||||
|
||||
// the data for the "buddy" text ctrl
|
||||
WXHWND m_hwndBuddy;
|
||||
WXFARPROC m_wndProcBuddy;
|
||||
|
@ -269,7 +269,7 @@ void wxSpinCtrl::OnSetFocus(wxFocusEvent& event)
|
||||
void wxSpinCtrl::NormalizeValue()
|
||||
{
|
||||
const int value = GetValue();
|
||||
const bool changed = value == m_oldValue;
|
||||
const bool changed = value != m_oldValue;
|
||||
|
||||
// notice that we have to call SetValue() even if the value didn't change
|
||||
// because otherwise we could be left with empty buddy control when value
|
||||
@ -278,11 +278,7 @@ void wxSpinCtrl::NormalizeValue()
|
||||
|
||||
if ( changed )
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_SPINCTRL_UPDATED, GetId());
|
||||
event.SetEventObject(this);
|
||||
event.SetInt(value);
|
||||
GetEventHandler()->ProcessEvent(event);
|
||||
m_oldValue = value;
|
||||
SendSpinUpdate(value);
|
||||
}
|
||||
}
|
||||
|
||||
@ -299,6 +295,11 @@ bool wxSpinCtrl::Create(wxWindow *parent,
|
||||
int min, int max, int initial,
|
||||
const wxString& name)
|
||||
{
|
||||
// this should be in ctor/init function but I don't want to add one to 2.8
|
||||
// to avoid problems with default ctor which can be inlined in the user
|
||||
// code and so might not get this fix without recompilation
|
||||
m_oldValue = INT_MIN;
|
||||
|
||||
// before using DoGetBestSize(), have to set style to let the base class
|
||||
// know whether this is a horizontal or vertical control (we're always
|
||||
// vertical)
|
||||
@ -546,27 +547,29 @@ void wxSpinCtrl::DoSetToolTip(wxToolTip *tip)
|
||||
#endif // wxUSE_TOOLTIPS
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// event processing
|
||||
// events processing and generation
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void wxSpinCtrl::OnSpinChange(wxSpinEvent& eventSpin)
|
||||
void wxSpinCtrl::SendSpinUpdate(int value)
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_SPINCTRL_UPDATED, GetId());
|
||||
event.SetEventObject(this);
|
||||
int value = eventSpin.GetPosition();
|
||||
event.SetInt( value );
|
||||
event.SetInt(value);
|
||||
|
||||
if (value != m_oldValue)
|
||||
(void)GetEventHandler()->ProcessEvent(event);
|
||||
|
||||
if ( eventSpin.GetSkipped() )
|
||||
{
|
||||
event.Skip();
|
||||
}
|
||||
(void)GetEventHandler()->ProcessEvent(event);
|
||||
|
||||
m_oldValue = value;
|
||||
}
|
||||
|
||||
void wxSpinCtrl::OnSpinChange(wxSpinEvent& eventSpin)
|
||||
{
|
||||
const int value = eventSpin.GetPosition();
|
||||
if ( value != m_oldValue )
|
||||
{
|
||||
SendSpinUpdate(value);
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// size calculations
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user