X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e90c1d2a19361551eb07778280f22be3e759cf64..66b6b04535cf261b7bae7da77332835b242abd04:/src/msw/scrolbar.cpp?ds=sidebyside diff --git a/src/msw/scrolbar.cpp b/src/msw/scrolbar.cpp index 2971968636..ab6f9668b5 100644 --- a/src/msw/scrolbar.cpp +++ b/src/msw/scrolbar.cpp @@ -28,7 +28,6 @@ #include "wx/scrolbar.h" #include "wx/msw/private.h" -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) BEGIN_EVENT_TABLE(wxScrollBar, wxControl) @@ -37,7 +36,6 @@ BEGIN_EVENT_TABLE(wxScrollBar, wxControl) #endif END_EVENT_TABLE() -#endif // Scrollbar bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, @@ -50,7 +48,9 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, return FALSE; parent->AddChild(this); SetName(name); +#if wxUSE_VALIDATORS SetValidator(validator); +#endif // wxUSE_VALIDATORS SetBackgroundColour(parent->GetBackgroundColour()) ; SetForegroundColour(parent->GetForegroundColour()) ; @@ -84,7 +84,7 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, // Now create scrollbar DWORD _direction = (style & wxHORIZONTAL) ? SBS_HORZ: SBS_VERT; - HWND scroll_bar = CreateWindowEx(MakeExtendedStyle(style), T("SCROLLBAR"), T("scrollbar"), + HWND scroll_bar = CreateWindowEx(MakeExtendedStyle(style), wxT("SCROLLBAR"), wxT("scrollbar"), _direction | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); @@ -131,6 +131,7 @@ bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, wxEventType scrollEvent = wxEVT_NULL; int nScrollInc; + bool isScrolling = TRUE; switch ( wParam ) { case SB_TOP: @@ -163,8 +164,11 @@ bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, scrollEvent = wxEVT_SCROLL_PAGEDOWN; break; - case SB_THUMBTRACK: case SB_THUMBPOSITION: + isScrolling = FALSE; + /* fall-through */ + + case SB_THUMBTRACK: nScrollInc = pos - position; scrollEvent = wxEVT_SCROLL_THUMBTRACK; break; @@ -173,9 +177,10 @@ bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, nScrollInc = 0; } - if ( nScrollInc == 0 ) + if (( nScrollInc == 0 ) && isScrolling ) { // no event to process, so don't process it + // GRG: always process SB_THUMBPOSITION ! return FALSE; } @@ -190,6 +195,7 @@ bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, wxScrollEvent event(scrollEvent, m_windowId); event.SetPosition(new_pos); event.SetEventObject( this ); + event.SetScrolling(isScrolling); return GetEventHandler()->ProcessEvent(event); }