Improve visibility and update caching.

This commit is contained in:
James Grogan 2022-11-16 17:27:19 +00:00
parent 70891ce7b4
commit 722bda2801
8 changed files with 41 additions and 24 deletions

View file

@ -10,7 +10,7 @@ std::unique_ptr<StackWidget> StackWidget::Create()
return std::make_unique<StackWidget>();
}
void StackWidget::ShowChild(Widget* target)
void StackWidget::showChild(Widget* target)
{
for(auto& child : mChildren)
{

View file

@ -9,7 +9,7 @@ public:
static std::unique_ptr<StackWidget> Create();
void ShowChild(Widget* child);
void showChild(Widget* child);
};
using StackWidgetUPtr = std::unique_ptr<StackWidget>;

View file

@ -132,6 +132,11 @@ void Widget::setVisible(bool visible)
mVisibilityDirty = true;
}
mVisible = visible;
for (auto& child : mChildren)
{
child->setVisible(mVisible);
}
}
bool Widget::isDirty() const
@ -198,6 +203,7 @@ void Widget::updateChildLocations()
{
child->setBounds(mSize.mWidth, mSize.mHeight);
child->setLocation(mLocation);
child->setVisible(mVisible);
}
}
@ -259,7 +265,7 @@ bool Widget::onMouseEvent(const MouseEvent* event)
}
if(!inChild)
{
if(contains(event->GetClientLocation()))
if(mVisible && contains(event->GetClientLocation()))
{
onMyMouseEvent(event);
return true;