2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 06:27:43 +00:00

Button widget and mouse events

This commit is contained in:
Jack Andersen
2015-12-04 14:42:46 -10:00
parent 382016d4d7
commit 857615ab00
17 changed files with 709 additions and 112 deletions

View File

@@ -24,14 +24,94 @@ std::unique_ptr<View> Space::setContentView(std::unique_ptr<View>&& view)
void Space::mouseDown(const boo::SWindowCoord& coord, boo::EMouseButton button, boo::EModifierKey mod)
{
if (m_contentView && !m_contentMouseDown &&
m_contentView->subRect().coordInRect(coord))
{
m_contentView->mouseDown(coord, button, mod);
m_contentMouseDown = true;
}
if (m_toolbar && !m_toolbarMouseDown &&
m_toolbar->subRect().coordInRect(coord))
{
m_toolbar->mouseDown(coord, button, mod);
m_toolbarMouseDown = true;
}
}
void Space::mouseUp(const boo::SWindowCoord& coord, boo::EMouseButton button, boo::EModifierKey mod)
{
if (m_contentView && m_contentMouseDown)
{
m_contentView->mouseUp(coord, button, mod);
m_contentMouseDown = false;
}
if (m_toolbar && m_toolbarMouseDown)
{
m_toolbar->mouseUp(coord, button, mod);
m_toolbarMouseDown = false;
}
}
void Space::mouseMove(const boo::SWindowCoord& coord)
{
if (m_contentView)
{
if (m_contentView->subRect().coordInRect(coord))
{
if (!m_contentMouseIn)
{
m_contentView->mouseEnter(coord);
m_contentMouseIn = true;
}
m_contentView->mouseMove(coord);
}
else
{
if (m_contentMouseIn)
{
m_contentView->mouseLeave(coord);
m_contentMouseIn = false;
}
}
}
if (m_toolbar)
{
if (m_toolbar->subRect().coordInRect(coord))
{
if (!m_toolbarMouseIn)
{
m_toolbar->mouseEnter(coord);
m_toolbarMouseIn = true;
}
m_toolbar->mouseMove(coord);
}
else
{
if (m_toolbarMouseIn)
{
m_toolbar->mouseLeave(coord);
m_toolbarMouseIn = false;
}
}
}
}
void Space::mouseEnter(const boo::SWindowCoord& coord)
{
}
void Space::mouseLeave(const boo::SWindowCoord& coord)
{
if (m_contentView && m_contentMouseIn)
{
m_contentView->mouseLeave(coord);
m_contentMouseIn = false;
}
if (m_toolbar && m_toolbarMouseIn)
{
m_toolbar->mouseLeave(coord);
m_toolbarMouseIn = false;
}
}
void Space::resetResources(ViewResources& res)