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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user