Improve visibility and update caching.
This commit is contained in:
parent
70891ce7b4
commit
722bda2801
8 changed files with 41 additions and 24 deletions
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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>;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue