From: Václav Slavík Date: Sat, 9 Feb 2002 23:27:52 +0000 (+0000) Subject: fix for scrollbar's thumb update bug in wxUniv X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/21c3670fecfba15df37ade5fd4fb47829e399caa fix for scrollbar's thumb update bug in wxUniv git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14090 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/univ/scrolbar.h b/include/wx/univ/scrolbar.h index 1a1eb9de00..2aa478414b 100644 --- a/include/wx/univ/scrolbar.h +++ b/include/wx/univ/scrolbar.h @@ -122,6 +122,9 @@ protected: // event handlers void OnIdle(wxIdleEvent& event); + + // forces update of thumb's visual appearence (does nothing if m_dirty=FALSE) + void UpdateThumb(); // SetThumbPosition() helper void DoSetThumb(int thumbPos); diff --git a/src/univ/scrolbar.cpp b/src/univ/scrolbar.cpp index 4445239eb9..e2f146b7d4 100644 --- a/src/univ/scrolbar.cpp +++ b/src/univ/scrolbar.cpp @@ -300,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 ) { @@ -373,8 +379,6 @@ void wxScrollBar::OnIdle(wxIdleEvent& event) m_dirty = FALSE; } - - event.Skip(); } void wxScrollBar::DoDraw(wxControlRenderer *renderer) @@ -464,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 )