X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/55079b432bf9e46f9b19efa71462b32022ffcf5e..92bdf9f72f6f9aae3de0115b7ac8c6037ef95ca1:/src/msw/slider95.cpp diff --git a/src/msw/slider95.cpp b/src/msw/slider95.cpp index f9106b7830..da83a733f6 100644 --- a/src/msw/slider95.cpp +++ b/src/msw/slider95.cpp @@ -112,7 +112,7 @@ wxEND_FLAGS( wxSliderStyle ) IMPLEMENT_DYNAMIC_CLASS_XTI(wxSlider, wxControl,"wx/scrolbar.h") wxBEGIN_PROPERTIES_TABLE(wxSlider) - wxEVENT_RANGE_PROPERTY( Scroll , wxEVT_SCROLL_TOP , wxEVT_SCROLL_ENDSCROLL , wxScrollEvent ) + wxEVENT_RANGE_PROPERTY( Scroll , wxEVT_SCROLL_TOP , wxEVT_SCROLL_CHANGED , wxScrollEvent ) wxEVENT_PROPERTY( Updated , wxEVT_COMMAND_SLIDER_UPDATED , wxCommandEvent ) wxPROPERTY( Value , int , SetValue, GetValue , 0, 0 /*flags*/ , wxT("Helpstring") , wxT("group")) @@ -149,6 +149,8 @@ void wxSlider::Init() m_rangeMax = 0; m_rangeMin = 0; m_tickFreq = 0; + + m_isDragging = false; } bool @@ -328,14 +330,29 @@ bool wxSlider::MSWOnScroll(int WXUNUSED(orientation), case SB_THUMBTRACK: scrollEvent = wxEVT_SCROLL_THUMBTRACK; + m_isDragging = true; break; case SB_THUMBPOSITION: - scrollEvent = wxEVT_SCROLL_THUMBRELEASE; + if ( m_isDragging ) + { + scrollEvent = wxEVT_SCROLL_THUMBRELEASE; + m_isDragging = false; + } + else + { + // this seems to only happen when the mouse wheel is used: in + // this case, as it might be unexpected to get THUMBRELEASE + // without preceding THUMBTRACKs, we don't generate it at all + // but generate CHANGED event because the control itself does + // not send us SB_ENDSCROLL for whatever reason when mouse + // wheel is used + scrollEvent = wxEVT_SCROLL_CHANGED; + } break; case SB_ENDSCROLL: - scrollEvent = wxEVT_SCROLL_ENDSCROLL; + scrollEvent = wxEVT_SCROLL_CHANGED; break; default: