#include #include #include namespace psemek::ui { element * element::root() { element * r = this; while (r->parent()) r = r->parent(); return r; } element const * element::root() const { element const * r = this; while (r->parent()) r = r->parent(); return r; } async::event_loop * element::loop() const { element const * e = this; while (!e->loop_ && e->parent()) e = e->parent(); return e->loop_; } void element::reshape() { reshape(shape().bbox()); } geom::box element::size_constraints() const { static float const inf = std::numeric_limits::infinity(); return {{{0.f, inf}, {0.f, inf}}}; } std::shared_ptr