diff --git a/uppsrc/CtrlLib/ScrollBar.cpp b/uppsrc/CtrlLib/ScrollBar.cpp index 8ba7554aa..0fbd77c07 100644 --- a/uppsrc/CtrlLib/ScrollBar.cpp +++ b/uppsrc/CtrlLib/ScrollBar.cpp @@ -66,6 +66,7 @@ ScrollBar::ScrollBar() { style = NULL; SetStyle(StyleDefault()); BackPaint(); + is_active = false; } ScrollBar::~ScrollBar() {} @@ -326,18 +327,18 @@ bool ScrollBar::Set(int apagepos) { void ScrollBar::Set(int _pagepos, int _pagesize, int _totalsize) { pagesize = _pagesize; totalsize = _totalsize; - bool a = totalsize > pagesize && pagesize > 0; - if(autohide && a != IsShown()) { - Show(a); + is_active = totalsize > pagesize && pagesize > 0; + if(autohide && is_active != IsShown()) { + Show(is_active); WhenVisibility(); } if(autodisable) { - if(prev.IsEnabled() != a) + if(prev.IsEnabled() != is_active) Refresh(); - prev.Enable(a); - next.Enable(a); - prev2.Enable(a); - next2.Enable(a); + prev.Enable(is_active); + next.Enable(is_active); + prev2.Enable(is_active); + next2.Enable(is_active); } Set(_pagepos); } diff --git a/uppsrc/CtrlLib/ScrollBar.h b/uppsrc/CtrlLib/ScrollBar.h index e6e58d481..58ca849e5 100644 --- a/uppsrc/CtrlLib/ScrollBar.h +++ b/uppsrc/CtrlLib/ScrollBar.h @@ -43,6 +43,7 @@ private: int minthumb; bool autohide:1; bool autodisable:1; + bool is_active:1; const Style *style; @@ -75,6 +76,8 @@ public: bool Set(int pagepos); void SetPage(int pagesize); void SetTotal(int totalsize); + + bool IsActive() const { return is_active; } bool ScrollInto(int pos, int linesize); bool ScrollInto(int pos) { return ScrollInto(pos, linesize); }