Don't let MSW's wxSpinCtrl emit spin up and down events as in the other ports
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54297 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
5bc128d67f
commit
177e38e645
@ -99,8 +99,9 @@ protected:
|
||||
virtual void DoSetToolTip( wxToolTip *tip );
|
||||
#endif // wxUSE_TOOLTIPS
|
||||
|
||||
// the handler for wxSpinButton events
|
||||
void OnSpinChange(wxSpinEvent& event);
|
||||
virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
|
||||
virtual bool MSWOnScroll(int orientation, WXWORD wParam,
|
||||
WXWORD pos, WXHWND control);
|
||||
|
||||
// handle processing of special keys
|
||||
void OnChar(wxKeyEvent& event);
|
||||
|
@ -94,12 +94,6 @@ public:
|
||||
|
||||
/**
|
||||
Gets the value of the spin control.
|
||||
|
||||
Notice that if you use this method from a handler processing a change
|
||||
of the control value, it may return the old value, not the new one
|
||||
(because the event handler can veto the change and this prevent the
|
||||
value from changing at all). Use wxSpinEvent::GetValue() to retrieve
|
||||
the new value in this case.
|
||||
*/
|
||||
int GetValue() const;
|
||||
|
||||
|
@ -114,10 +114,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxSpinCtrl, wxSpinButton)
|
||||
EVT_CHAR(wxSpinCtrl::OnChar)
|
||||
|
||||
EVT_SET_FOCUS(wxSpinCtrl::OnSetFocus)
|
||||
EVT_KILL_FOCUS(wxSpinCtrl::OnKillFocus)
|
||||
EVT_SPIN(wxID_ANY, wxSpinCtrl::OnSpinChange)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
#define GetBuddyHwnd() (HWND)(m_hwndBuddy)
|
||||
@ -627,15 +625,37 @@ void wxSpinCtrl::SendSpinUpdate(int value)
|
||||
m_oldValue = value;
|
||||
}
|
||||
|
||||
void wxSpinCtrl::OnSpinChange(wxSpinEvent& eventSpin)
|
||||
bool wxSpinCtrl::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam,
|
||||
WXWORD pos, WXHWND control)
|
||||
{
|
||||
const int value = eventSpin.GetPosition();
|
||||
if ( value != m_oldValue )
|
||||
wxCHECK_MSG( control, false, wxT("scrolling what?") );
|
||||
|
||||
if ( wParam != SB_THUMBPOSITION )
|
||||
{
|
||||
SendSpinUpdate(value);
|
||||
// probable SB_ENDSCROLL - we don't react to it
|
||||
return false;
|
||||
}
|
||||
|
||||
int new_value = (short) pos;
|
||||
if (m_oldValue != new_value)
|
||||
SendSpinUpdate( new_value );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxSpinCtrl::MSWOnNotify(int WXUNUSED(idCtrl), WXLPARAM lParam, WXLPARAM *result)
|
||||
{
|
||||
NM_UPDOWN *lpnmud = (NM_UPDOWN *)lParam;
|
||||
|
||||
if (lpnmud->hdr.hwndFrom != GetHwnd()) // make sure it is the right control
|
||||
return false;
|
||||
|
||||
*result = 0; // never reject UP and DOWN events
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// size calculations
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user