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:
@@ -99,8 +99,9 @@ protected:
|
|||||||
virtual void DoSetToolTip( wxToolTip *tip );
|
virtual void DoSetToolTip( wxToolTip *tip );
|
||||||
#endif // wxUSE_TOOLTIPS
|
#endif // wxUSE_TOOLTIPS
|
||||||
|
|
||||||
// the handler for wxSpinButton events
|
virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
|
||||||
void OnSpinChange(wxSpinEvent& event);
|
virtual bool MSWOnScroll(int orientation, WXWORD wParam,
|
||||||
|
WXWORD pos, WXHWND control);
|
||||||
|
|
||||||
// handle processing of special keys
|
// handle processing of special keys
|
||||||
void OnChar(wxKeyEvent& event);
|
void OnChar(wxKeyEvent& event);
|
||||||
|
@@ -94,12 +94,6 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
Gets the value of the spin control.
|
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;
|
int GetValue() const;
|
||||||
|
|
||||||
|
@@ -114,10 +114,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl)
|
|||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxSpinCtrl, wxSpinButton)
|
BEGIN_EVENT_TABLE(wxSpinCtrl, wxSpinButton)
|
||||||
EVT_CHAR(wxSpinCtrl::OnChar)
|
EVT_CHAR(wxSpinCtrl::OnChar)
|
||||||
|
|
||||||
EVT_SET_FOCUS(wxSpinCtrl::OnSetFocus)
|
EVT_SET_FOCUS(wxSpinCtrl::OnSetFocus)
|
||||||
EVT_KILL_FOCUS(wxSpinCtrl::OnKillFocus)
|
EVT_KILL_FOCUS(wxSpinCtrl::OnKillFocus)
|
||||||
EVT_SPIN(wxID_ANY, wxSpinCtrl::OnSpinChange)
|
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
#define GetBuddyHwnd() (HWND)(m_hwndBuddy)
|
#define GetBuddyHwnd() (HWND)(m_hwndBuddy)
|
||||||
@@ -627,15 +625,37 @@ void wxSpinCtrl::SendSpinUpdate(int value)
|
|||||||
m_oldValue = 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();
|
wxCHECK_MSG( control, false, wxT("scrolling what?") );
|
||||||
if ( value != m_oldValue )
|
|
||||||
|
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
|
// size calculations
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user