X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a29ffc34c07e0408a798538b268d4733ee62965c..904ccf52370e021b55b8a4c1afc5f62bc904da20:/src/msw/scrolbar.cpp diff --git a/src/msw/scrolbar.cpp b/src/msw/scrolbar.cpp index 9c92f70f9e..7c32db671e 100644 --- a/src/msw/scrolbar.cpp +++ b/src/msw/scrolbar.cpp @@ -179,27 +179,36 @@ bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, scrollEvent = wxEVT_SCROLL_THUMBTRACK; break; + case SB_ENDSCROLL: + nScrollInc = 0; + scrollEvent = wxEVT_SCROLL_ENDSCROLL; + break; + default: nScrollInc = 0; } - // don't process the event if there is no displacement, - // unless this is a thumb release event. - if (( nScrollInc == 0 ) && ( scrollEvent != wxEVT_SCROLL_THUMBRELEASE )) + if ( nScrollInc ) { - return FALSE; - } + position += nScrollInc; - int new_pos = position + nScrollInc; + if ( position < 0 ) + position = 0; + if ( position > maxPos ) + position = maxPos; - if (new_pos < 0) - new_pos = 0; - if (new_pos > maxPos) - new_pos = maxPos; + SetThumbPosition(position); + } + else if ( scrollEvent != wxEVT_SCROLL_THUMBRELEASE && + scrollEvent != wxEVT_SCROLL_ENDSCROLL ) + { + // don't process the event if there is no displacement, + // unless this is a thumb release or end scroll event. + return FALSE; + } - SetThumbPosition(new_pos); wxScrollEvent event(scrollEvent, m_windowId); - event.SetPosition(new_pos); + event.SetPosition(position); event.SetEventObject( this ); return GetEventHandler()->ProcessEvent(event);