Ejemplo n.º 1
0
void Scrollbar::Scroll(float delta)
{
	if (sliderPosY <= 2.5f && sliderPosY >= -2.5f)
		ScrollPlus(delta);
	else if (sliderPosY > 2.5f)
	{
		if (delta > 0.0f)
			ScrollMinus(delta);
		if (delta < 0.0f)
			ScrollPlus(delta);
	}
	else if (sliderPosY < -2.5f)
	{
		if (delta > 0.0f)
			ScrollPlus(delta);
		if (delta < 0.0f)
			ScrollMinus(delta);
	}
}
Ejemplo n.º 2
0
void IGUIScrollBar::HandleMessage(SGUIMessage &Message)
{
	switch (Message.type)
	{
		case GUIM_MOUSE_MOTION:
		{
			// TODO Gee: Optimizations needed!

			CPos mouse = m_pHostObject->GetMousePos();

				// If bar is being dragged
			if (m_BarPressed)
			{
				SetPosFromMousePos(mouse);
				UpdatePosBoundaries();
			}

			// check if components are being hovered
			m_BarHovered = GetBarRect().PointInside(mouse);
			m_ButtonMinusHovered = HoveringButtonMinus(mouse);
			m_ButtonPlusHovered =  HoveringButtonPlus(mouse);

			if (!m_ButtonMinusHovered)
				m_ButtonMinusPressed = false;

			if (!m_ButtonPlusHovered)
				m_ButtonPlusPressed = false;
			break;
		}

		case GUIM_MOUSE_PRESS_LEFT:
		{
			if (!m_pHostObject)
				break;

			CPos mouse = m_pHostObject->GetMousePos();

			// if bar is pressed
			if (GetBarRect().PointInside(mouse))
			{
				m_BarPressed = true;
				m_BarPressedAtPos = mouse;
				m_PosWhenPressed = m_Pos;
			}
			else
			// if button-minus is pressed
			if (m_ButtonMinusHovered)
			{
				m_ButtonMinusPressed = true;
				ScrollMinus();
			}
			else
			// if button-plus is pressed
			if (m_ButtonPlusHovered)
			{
				m_ButtonPlusPressed = true;
				ScrollPlus();
			}
			else
			// Pressing the background of the bar, to scroll
			//  notice the if-sentence alone does not admit that,
			//  it must be after the above if/elses
			{
				if (GetOuterRect().PointInside(mouse))
				{
					// Scroll plus or minus a lot, this might change, it doesn't
					//  have to be fancy though.
					if (mouse.y < GetBarRect().top)
						ScrollMinusPlenty();
					else
						ScrollPlusPlenty();
						// Simulate mouse movement to see if bar now is hovered
					SGUIMessage msg(GUIM_MOUSE_MOTION);
					HandleMessage(msg);
				}
			}
			break;
		}

		case GUIM_MOUSE_RELEASE_LEFT:
		{
			m_ButtonMinusPressed = false;
			m_ButtonPlusPressed = false;
			break;
		}

		case GUIM_MOUSE_WHEEL_UP:
		{
			ScrollMinus();
			// Since the scroll was changed, let's simulate a mouse movement
			//  to check if scrollbar now is hovered
			SGUIMessage msg(GUIM_MOUSE_MOTION);
			HandleMessage(msg);
			break;
		}

		case GUIM_MOUSE_WHEEL_DOWN:
		{
			ScrollPlus();
			// Since the scroll was changed, let's simulate a mouse movement
			//  to check if scrollbar now is hovered
			SGUIMessage msg(GUIM_MOUSE_MOTION);
			HandleMessage(msg);
			break;
		}

		default:
			break;
	}
}