bool CScrollBarVertical::OnMouseButtonUp ( sMouseEvents e ) { if ( m_bPressed ) { UpdateThumbRect (); m_Arrow = CLEAR; m_bPressed = false; m_bDrag = false; _ClearFocus (); return true; } return false; }
void SetPageSize( int nPageSize ) { m_nPageSize = nPageSize; Cap(); UpdateThumbRect(); }
void SetTrackPos( int nPosition ) { m_nPosition = nPosition; Cap(); UpdateThumbRect(); }
bool CScrollBarVertical::OnMouseButtonDown ( sMouseEvents e ) { if ( !CanHaveFocus () ) return false; if ( e.eButton == sMouseEvents::LeftButton ) { // Check for click on up button if ( m_rUpButton.ContainsPoint ( e.pos ) ) { if ( m_nPosition > m_nStart ) m_nPosition -= m_nStep; UpdateThumbRect (); m_timer.Start ( SCROLLBAR_ARROWCLICK_REPEAT ); m_bPressed = true; m_Arrow = CLICKED_UP; _SetFocus (); return true; } // Check for click on down button if ( m_rDownButton.ContainsPoint ( e.pos ) ) { if ( m_nPosition + m_nPageSize <= m_nEnd ) m_nPosition += m_nStep; UpdateThumbRect (); m_timer.Start ( SCROLLBAR_ARROWCLICK_REPEAT ); m_bPressed = true; m_Arrow = CLICKED_DOWN; _SetFocus (); return true; } // Check for click on thumb if ( m_rThumb.ContainsPoint ( e.pos ) ) { nThumbOffset = e.pos.m_nY - m_rThumb.m_pos.m_nY; m_Arrow = CLICKED_THUMB; m_bDrag = true; m_bPressed = true; _SetFocus (); return true; } // Check for click on track if ( m_rBoundingBox.ContainsPoint ( e.pos ) ) { if ( m_rThumb.m_pos.m_nY > e.pos.m_nY && m_rBoundingBox.m_pos.m_nY <= e.pos.m_nY) { Scroll ( -( m_nPageSize - 1 ) ); _SetFocus (); m_timer.Start ( 0.5 ); m_bPressed = true; m_Arrow = HELD_UP; return true; } else if ( m_rThumb.m_pos.m_nY + m_rThumb.m_size.cy <= e.pos.m_nY && ( m_rBoundingBox.m_pos.m_nY + m_rBoundingBox.m_size.cx ) + m_rBoundingBox.m_size.cy > e.pos.m_nY) { Scroll ( m_nPageSize - 1 ); _SetFocus (); m_timer.Start ( 0.5 ); m_bPressed = true; m_Arrow = HELD_DOWN; return true; } } } return false; }