Beispiel #1
0
	bool FrameWindow::onMouseMove(void)
	{
		if(m_tracking)
		{
			point pt = transformToWndCoord(m_system.getCursor().getPosition());
			point newpos = pt - m_offset;

			Rect testarea(m_area);
			testarea.setPosition(newpos);

			if(m_clampToScreen && m_parent)
			{
				Size me = m_area.getSize();
				Size max = m_parent->getSize();
				if(testarea.m_left < 0.f)
					testarea.m_left = 0.f;
				if(testarea.m_top < 0.f)
					testarea.m_top = 0.f;
				if(testarea.m_right > max.width)
					testarea.m_left = max.width - me.width;
				if(testarea.m_bottom > max.height)
					testarea.m_top = max.height - me.height;

				testarea.setSize(me);
			}
			
			setArea(testarea);

			EventArgs a;
			a.name = "On_Move";
			callHandler(&a);
		}
		return true;
	}
Beispiel #2
0
bool Button::onMouseButton(EventArgs::MouseButtons btn, EventArgs::ButtonState state)
{
	if(btn == EventArgs::Left)
	{
		if(state == EventArgs::Down)
		{
			m_system.queryCaptureInput(this);
			m_pushed = true;
			invalidate();
		}
		else
		{
			m_system.queryCaptureInput(0);
			m_pushed = false;
			
			point pt = transformToWndCoord(m_system.getCursor().getPosition());
			if(m_area.isPointInRect(pt))
			{
				MouseEventArgs m;
				m.name = "On_Clicked";
				callHandler(&m);

				send_event(events::ClickEvent());
			}
			invalidate();
		}
	}
	Label::onMouseButton(btn, state);
	return true;
}
Beispiel #3
0
bool Thumb::onMouseMove(void)
{
	if(m_pushed)
	{
		point pt = transformToWndCoord(m_system.getCursor().getPosition());
		point newpos = pt - m_offset;
		Rect testarea(m_area);
		testarea.setPosition(newpos);

		Size me = m_area.getSize();

		if(testarea.m_left < m_trackarea.m_left)
			testarea.m_left = m_trackarea.m_left;
		if(testarea.m_top < m_trackarea.m_top)
			testarea.m_top = m_trackarea.m_top;
		if(testarea.m_right > m_trackarea.m_right)
			testarea.m_left = m_trackarea.m_right - me.width;
		if(testarea.m_bottom > m_trackarea.m_bottom)
			testarea.m_top = m_trackarea.m_bottom - me.height;

		testarea.setSize(me);
		invalidate();
	
		m_area = testarea;
		send_event(events::TrackEvent());
	}
	return true;
}
Beispiel #4
0
bool base_window::hitTest(const point& pt)
{
	if(!m_visible)
		return false;

	if(!m_ignoreInputEvents)
		return m_area.isPointInRect(transformToWndCoord(pt));
	
	return false;
}
Beispiel #5
0
	bool CategorizedList::onMouseButton(EventArgs::MouseButtons btn, EventArgs::ButtonState state)
	{
		if(state == EventArgs::Up)
		{
			point pt = transformToWndCoord(m_system.getCursor().getPosition()) - m_area.getPosition();
			CategoriesIter i = std::find_if(m_categories.begin(), m_categories.end(), detail::HitTestTask(pt));
			if(i != m_categories.end())
			{
				CategoryPtr p = *i;
				p->Fold(!p->collapsed);
			}
		}
		return true;
	}
Beispiel #6
0
	bool MarkupText::onMouseMove(void)
	{
		m_pt = transformToWndCoord(m_system.getCursor().getPosition());
		m_pt -= m_area.getPosition();

		bool linkhit = false;
		if(m_selectedlnk)
		{	
			linkhit = isHitChunk<LinkArea>(m_selectedlnk.get(), m_pt);
			if(!linkhit)
			{
				setHovered(m_selectedlnk.get(), false);
				m_selectedlnk.reset();
				invalidate();
			}
		}

		if(!m_selectedlnk)
		{
			std::vector<PLinkArea>::iterator ilink = std::find_if(m_links.begin(), m_links.end(), hovertester<LinkArea>(m_pt, *this));
			if(ilink != m_links.end())
			{
				m_selectedlnk = (*ilink);
				setHovered(m_selectedlnk.get(), true);
				invalidate();
			}
		}

		if(m_selectedtt)
		{	
			bool hit = isHitChunk<TooltipArea>(m_selectedtt.get(), m_pt);
			if(hit)
				return true;
			else
			{
				hideTooltip();
			}
		}

		std::vector<PTooltipArea>::iterator itt = std::find_if(m_tooltips.begin(), m_tooltips.end(), hovertester<TooltipArea>(m_pt, *this));
		if(itt != m_tooltips.end())
		{
			showTooltip(*itt);
		}

		return MarkupBase::onMouseMove();
	}
Beispiel #7
0
	bool ListBox::onMouseMove(void)
	{
		point pt = transformToWndCoord(m_system.getCursor().getPosition()) - m_area.getPosition();
		child_iter i = std::find_if(m_children.begin(), m_children.end(), detail::HitTestTask(pt));
		if(i != m_children.end())
		{
			if(m_selectedItem == *i)
				return true;
			m_selectedItem = *i;
		}
		else
		{
			// shouldn't be here
			m_selectedItem = 0;
		}
		invalidate();
		return true;
	}
Beispiel #8
0
	bool FrameWindow::onMouseButton(EventArgs::MouseButtons btn, EventArgs::ButtonState state)
	{
		if(state == EventArgs::Down && m_movable)
		{
			m_system.queryCaptureInput(this);
			m_tracking = true;

			point pt = transformToWndCoord(m_system.getCursor().getPosition());
			m_offset = pt - m_area.getPosition();
		}
		else
		{
			if(m_tracking)
				m_system.queryCaptureInput(0);

			m_tracking = false;
		}
		return base_window::onMouseButton(btn, state);
	}
Beispiel #9
0
bool Thumb::onMouseButton(EventArgs::MouseButtons btn, EventArgs::ButtonState state)
{
	if(btn == EventArgs::Left)
	{
		if(state == EventArgs::Down && m_movable)
		{
			m_system.queryCaptureInput(this);
			m_pushed = true;

			point pt = transformToWndCoord(m_system.getCursor().getPosition());
			m_offset = pt - m_area.getPosition();

		}
		else
		{
			if(m_pushed)
				m_system.queryCaptureInput(0);

			m_pushed = false;
		}
		invalidate();
	}
	return true;
}
Beispiel #10
0
	bool ScrollBar::onMouseButton(EventArgs::MouseButtons btn, EventArgs::ButtonState state)
	{
		if(btn == EventArgs::Left)
		{
			if(state == EventArgs::Down)
			{
				point pt = transformToWndCoord(m_system.getCursor().getPosition());
				pt -= m_area.getPosition();
				if(m_thumb)
				{
					const Rect& track = m_thumb->getTrackarea();
					float size = m_horiz ? track.getWidth() : track.getHeight();
					if(track.isPointInRect(pt))
					{
						point pos = pt - track.getPosition();
						/*pos.x -= m_thumb->getArea().getWidth() / 2;
						pos.y -= m_thumb->getArea().getHeight() / 2;*/
						m_thumb->setProgress(m_horiz ? pos.x / size : pos.y / size);
					}
				}
			}
		}
		return true;
	}
Beispiel #11
0
bool base_window::isCursorInside() const {
	point pt = transformToWndCoord(m_system.getCursor().getPosition());
	return m_area.isPointInRect(pt);
}