예제 #1
0
// Start.Real Wolf.06.11.14.
void CUITrackBar::Update()
{	
	if (m_bState && !pInput->iGetAsyncBtnState(0) )
		OnMouse(0.f, 0.f, WINDOW_LBUTTON_UP);

	if (m_bState)
		UpdatePosRelativeToMouse();

	CUIWindow::Update();
}
예제 #2
0
bool CUITrackBar::OnMouseAction(float x, float y, EUIMessages mouse_action)
{
	CUIWindow::OnMouseAction(x, y, mouse_action);

	switch (mouse_action)
	{
	case WINDOW_MOUSE_MOVE:
		{
			if(m_bCursorOverWindow && m_b_mouse_capturer)
			{
				if (pInput->iGetAsyncBtnState(0))
					UpdatePosRelativeToMouse();
			}
		}break;
	case WINDOW_LBUTTON_DOWN:
		{
			m_b_mouse_capturer = m_bCursorOverWindow;
			if(m_b_mouse_capturer)
				UpdatePosRelativeToMouse();
		}break;

	case WINDOW_LBUTTON_UP:
		{
			m_b_mouse_capturer = false;
		}
		break;
	case WINDOW_MOUSE_WHEEL_UP:
		{
			if(m_b_is_float)
			{
				m_f_val -= GetInvert()?-m_f_step:m_f_step;
				clamp(m_f_val, m_f_min, m_f_max);
			}
			else
			{
				m_i_val -= GetInvert()?-m_i_step:m_i_step;
				clamp(m_i_val, m_i_min, m_i_max);
			}
			GetMessageTarget()->SendMessage(this, BUTTON_CLICKED, NULL);
			UpdatePos			();
			OnChangedOptValue	();
		}
		break;
	case WINDOW_MOUSE_WHEEL_DOWN:
		{
			if(m_b_is_float)
			{
				m_f_val += GetInvert()?-m_f_step:m_f_step;
				clamp(m_f_val, m_f_min, m_f_max);
			}
			else
			{
				m_i_val += GetInvert()?-m_i_step:m_i_step;
				clamp(m_i_val, m_i_min, m_i_max);
			}
			GetMessageTarget()->SendMessage(this, BUTTON_CLICKED, NULL);
			UpdatePos();
			OnChangedOptValue	();
		}
		break;
	};
	return true;
}