コード例 #1
0
void Scrollbar::startTimerIfNeeded(double delay) {
  // Don't do anything for the thumb.
  if (m_pressedPart == ThumbPart)
    return;

  // Handle the track.  We halt track scrolling once the thumb is level
  // with us.
  if ((m_pressedPart == BackTrackPart || m_pressedPart == ForwardTrackPart) &&
      thumbWillBeUnderMouse()) {
    setHoveredPart(ThumbPart);
    return;
  }

  // We can't scroll if we've hit the beginning or end.
  ScrollDirectionPhysical dir = pressedPartScrollDirectionPhysical();
  if (dir == ScrollUp || dir == ScrollLeft) {
    if (m_currentPos == 0)
      return;
  } else {
    if (m_currentPos == maximum())
      return;
  }

  m_scrollTimer.startOneShot(delay, BLINK_FROM_HERE);
}
コード例 #2
0
void Scrollbar::autoscrollPressedPart(double delay)
{
    // Don't do anything for the thumb or if nothing was pressed.
    if (m_pressedPart == ThumbPart || m_pressedPart == NoPart)
        return;

    // Handle the track.
    if ((m_pressedPart == BackTrackPart || m_pressedPart == ForwardTrackPart) && thumbWillBeUnderMouse()) {
        setHoveredPart(ThumbPart);
        return;
    }

    // Handle the arrows and track.
    if (m_scrollableArea && m_scrollableArea->userScroll(pressedPartScrollGranularity(), toScrollDelta(pressedPartScrollDirectionPhysical(), 1)).didScroll())
        startTimerIfNeeded(delay);
}