bool CScrollBarVertical::OnMouseButtonUp ( sMouseEvents e )
{
	if ( m_bPressed )
	{
		UpdateThumbRect ();
		m_Arrow = CLEAR;
		m_bPressed = false;
		m_bDrag = false;

		_ClearFocus ();

		return true;
	}

	return false;
}
Exemplo n.º 2
0
 void SetPageSize( int nPageSize ) { m_nPageSize = nPageSize; Cap(); UpdateThumbRect(); }
Exemplo n.º 3
0
 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;
}