From 5dda61ab5005a70f34e824a2f3b48d3151cfc116 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Wed, 3 Mar 2021 13:03:32 +0300 Subject: [PATCH] UI: use async::event_loop instead of abstract async::executor --- libs/ui/include/psemek/ui/controller.hpp | 4 +++- libs/ui/include/psemek/ui/element.hpp | 8 ++++---- libs/ui/source/controller.cpp | 13 +++++++++---- libs/ui/source/element.cpp | 2 +- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/libs/ui/include/psemek/ui/controller.hpp b/libs/ui/include/psemek/ui/controller.hpp index 8866f27c..7ba07d9f 100644 --- a/libs/ui/include/psemek/ui/controller.hpp +++ b/libs/ui/include/psemek/ui/controller.hpp @@ -10,9 +10,11 @@ namespace psemek::ui struct controller { - controller(async::executor * loop); + controller(async::event_loop * loop); ~controller(); + async::event_loop * loop() const; + std::shared_ptr set_root(std::shared_ptr r); element * root(); diff --git a/libs/ui/include/psemek/ui/element.hpp b/libs/ui/include/psemek/ui/element.hpp index 7a42f185..89c8c36b 100644 --- a/libs/ui/include/psemek/ui/element.hpp +++ b/libs/ui/include/psemek/ui/element.hpp @@ -5,7 +5,7 @@ #include #include -#include +#include #include @@ -26,8 +26,8 @@ namespace psemek::ui virtual element * root(); virtual element const * root() const; - virtual async::executor * loop() const; - virtual void set_loop(async::executor * loop) { loop_ = loop; } + virtual async::event_loop * loop() const; + virtual void set_loop(async::event_loop * loop) { loop_ = loop; } virtual bool on_event(mouse_move const &) { return false; } virtual bool on_event(mouse_click const &) { return false; } @@ -58,7 +58,7 @@ namespace psemek::ui private: element * parent_ = nullptr; - async::executor * loop_ = nullptr; + async::event_loop * loop_ = nullptr; bool enabled_ = true; std::shared_ptr style_; mutable std::shared_ptr merged_style_; diff --git a/libs/ui/source/controller.cpp b/libs/ui/source/controller.cpp index b4d10868..6e336a3e 100644 --- a/libs/ui/source/controller.cpp +++ b/libs/ui/source/controller.cpp @@ -53,18 +53,18 @@ namespace psemek::ui struct controller::impl { - async::executor * loop; + async::event_loop * loop; painter_impl painter; std::shared_ptr root; std::optional> mouse; - impl(async::executor * loop); + impl(async::event_loop * loop); template bool event(E const & e); }; - controller::impl::impl(async::executor * loop) + controller::impl::impl(async::event_loop * loop) : loop(loop) , root{std::make_shared()} { @@ -91,10 +91,15 @@ namespace psemek::ui return false; } - controller::controller(async::executor * loop) + controller::controller(async::event_loop * loop) : pimpl_{make_impl(loop)} {} + async::event_loop * controller::loop() const + { + return impl().loop; + } + controller::~controller() = default; std::shared_ptr controller::set_root(std::shared_ptr r) diff --git a/libs/ui/source/element.cpp b/libs/ui/source/element.cpp index f216bfbe..451b9967 100644 --- a/libs/ui/source/element.cpp +++ b/libs/ui/source/element.cpp @@ -21,7 +21,7 @@ namespace psemek::ui return r; } - async::executor * element::loop() const + async::event_loop * element::loop() const { element const * e = this; while (!e->loop_ && e->parent()) e = e->parent();