#include "widget.h" #include void Widget::input(const kku::SystemEvent &event) { if (_blocker) _blocker->input(event); else { for (auto& child : _children) child->input(event); } } void Widget::update(const kku::microsec& dt) { for (auto& child : _children) child->update(dt); } void Widget::display() const { for (const auto& child : _children) child->display(); } void Widget::move(const kku::Vector2& delta) { for (auto& child : _children) child->move(delta); } void Widget::setVisibility(bool is_visible) { _is_visible = is_visible; for (auto& child : _children) child->setVisibility(_is_visible); } bool Widget::isVisible() const { return _is_visible; } void Widget::addChild(const std::shared_ptr& child) { child->setParent(shared_from_this()); const auto iterator = std::find(_children.begin(), _children.end(), child); if (iterator == _children.end()) _children.emplace_back(child); } void Widget::setParent(const std::shared_ptr& parent) { if (_parent != parent) { _parent = parent; _parent->addChild(shared_from_this()); } } void Widget::blockBy(const std::shared_ptr& blocker) { _blocker = blocker; } void Widget::unblock() { _blocker = nullptr; }