X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/23645bfa01b6450257f140a30c87565225b1ef4a..3dbe38c3700099a9c3d8423131eff0a8f394a0a4:/src/univ/scrolbar.cpp diff --git a/src/univ/scrolbar.cpp b/src/univ/scrolbar.cpp index 0bb2d38f6a..e2f146b7d4 100644 --- a/src/univ/scrolbar.cpp +++ b/src/univ/scrolbar.cpp @@ -49,6 +49,10 @@ #undef WXDEBUG_SCROLLBAR #endif // !__WXDEBUG__ +#if defined(WXDEBUG_SCROLLBAR) && defined(__WXMSW__) && !defined(__WXMICROWIN__) +#include "wx/msw/private.h" +#endif + // ---------------------------------------------------------------------------- // wxScrollBarTimer: this class is used to repeatedly scroll the scrollbar // when the mouse is help pressed on the arrow or on the bar. It generates the @@ -296,6 +300,12 @@ wxScrollArrows::Arrow wxScrollBar::HitTest(const wxPoint& pt) const // ---------------------------------------------------------------------------- void wxScrollBar::OnIdle(wxIdleEvent& event) +{ + UpdateThumb(); + event.Skip(); +} + +void wxScrollBar::UpdateThumb() { if ( m_dirty ) { @@ -369,8 +379,6 @@ void wxScrollBar::OnIdle(wxIdleEvent& event) m_dirty = FALSE; } - - event.Skip(); } void wxScrollBar::DoDraw(wxControlRenderer *renderer) @@ -460,6 +468,10 @@ bool wxScrollBar::PerformAction(const wxControlAction& action, { DoSetThumb(numArg); + // VS: we have to force redraw here, otherwise the thumb will lack + // behind mouse cursor + UpdateThumb(); + scrollType = wxEVT_SCROLLWIN_THUMBTRACK; } else if ( action == wxACTION_SCROLL_LINE_UP ) @@ -671,7 +683,9 @@ bool wxStdScrollBarInputHandler::HandleKey(wxInputConsumer *consumer, case WXK_LEFT: action = wxACTION_SCROLL_LINE_UP; break; case WXK_HOME: action = wxACTION_SCROLL_START; break; case WXK_END: action = wxACTION_SCROLL_END; break; + case WXK_PAGEUP: case WXK_PRIOR: action = wxACTION_SCROLL_PAGE_UP; break; + case WXK_PAGEDOWN: case WXK_NEXT: action = wxACTION_SCROLL_PAGE_DOWN; break; }