Esempio n. 1
0
void Scrollbar::moveThumb(int pos)
{
    // Drag the thumb.
    int thumbPos = theme()->thumbPosition(this);
    int thumbLen = theme()->thumbLength(this);
    int trackLen = theme()->trackLength(this);
    int maxPos = trackLen - thumbLen;
    int delta = pos - pressedPos();
    if (delta > 0)
        delta = min(maxPos - thumbPos, delta);
    else if (delta < 0)
        delta = max(-thumbPos, delta);
    if (delta) {
        setValue(static_cast<int>(static_cast<float>(thumbPos + delta) * maximum() / (trackLen - thumbLen)));
        setPressedPos(pressedPos() + theme()->thumbPosition(this) - thumbPos);
    }
}
Esempio n. 2
0
bool Scrollbar::thumbWillBeUnderMouse() const {
  int thumbPos = theme().trackPosition(*this) +
                 theme().thumbPosition(*this, scrollableAreaTargetPos());
  int thumbLength = theme().thumbLength(*this);
  return pressedPos() >= thumbPos && pressedPos() < thumbPos + thumbLength;
}