bool ScrollBar::Set(int apagepos) { int op = pagepos; pagepos = apagepos; if(pagepos > totalsize - pagesize) pagepos = totalsize - pagesize; if(pagepos < 0) pagepos = 0; int slsize = GetRange(); int mint = max(minthumb, style->thumbmin); if(totalsize <= 0) SetThumb(0, slsize); else { double thumbsize = slsize * pagesize / (double) totalsize; double rest = slsize * pagesize - thumbsize * totalsize; double ts, ps; if(thumbsize >= slsize || thumbsize < 0) { ts = slsize; ps = 0; } else if(thumbsize <= mint) { ps = ((slsize - mint) * (double)pagepos + rest) / (double) (totalsize - pagesize); ts = mint; } else { ps = (slsize * (double)pagepos + rest) / (double) totalsize; ts = thumbsize; } SetThumb(ffloor(ps), fceil(ts)); } if(pagepos != op) { Refresh(); WhenScroll(); return true; } return false; }
void ScrollBar::Position() { int slsize = GetRange(); int mint = max(minthumb, style->thumbmin); if(slsize < mint || totalsize <= pagesize) pagepos = 0; else if(thumbpos == slsize - thumbsize) pagepos = totalsize - pagesize; else if(thumbsize == mint) pagepos = iscale(thumbpos, (totalsize - pagesize), (slsize - mint)); else pagepos = iscale(thumbpos, totalsize, slsize); Action(); WhenScroll(); }
void HeaderCtrl::Scroll() { Refresh(); WhenScroll(); }
void ScrollBars::Scroll() { WhenScroll(); }