UI: use async::event_loop instead of abstract async::executor
This commit is contained in:
parent
336bdde8d2
commit
5dda61ab50
4 changed files with 17 additions and 10 deletions
|
|
@ -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<element> set_root(std::shared_ptr<element> r);
|
||||
element * root();
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
#include <psemek/ui/painter.hpp>
|
||||
#include <psemek/ui/style.hpp>
|
||||
|
||||
#include <psemek/async/executor.hpp>
|
||||
#include <psemek/async/event_loop.hpp>
|
||||
|
||||
#include <psemek/util/span.hpp>
|
||||
|
||||
|
|
@ -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<struct style const> style_;
|
||||
mutable std::shared_ptr<struct style const> merged_style_;
|
||||
|
|
|
|||
|
|
@ -53,18 +53,18 @@ namespace psemek::ui
|
|||
|
||||
struct controller::impl
|
||||
{
|
||||
async::executor * loop;
|
||||
async::event_loop * loop;
|
||||
painter_impl painter;
|
||||
std::shared_ptr<root_proxy> root;
|
||||
std::optional<geom::point<int, 2>> mouse;
|
||||
|
||||
impl(async::executor * loop);
|
||||
impl(async::event_loop * loop);
|
||||
|
||||
template <typename E>
|
||||
bool event(E const & e);
|
||||
};
|
||||
|
||||
controller::impl::impl(async::executor * loop)
|
||||
controller::impl::impl(async::event_loop * loop)
|
||||
: loop(loop)
|
||||
, root{std::make_shared<root_proxy>()}
|
||||
{
|
||||
|
|
@ -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<element> controller::set_root(std::shared_ptr<element> r)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue