Support selector canceled callback in ui::spawn
This commit is contained in:
parent
fe1769cf46
commit
a368eb32ff
2 changed files with 5 additions and 3 deletions
|
|
@ -74,6 +74,6 @@ namespace psemek::ui
|
||||||
std::function<void(std::optional<std::size_t>)> mouseover_callback_;
|
std::function<void(std::optional<std::size_t>)> mouseover_callback_;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool spawn(element * root, std::shared_ptr<selector> selector, geom::point<float, 2> const & position);
|
bool spawn(element * root, std::shared_ptr<selector> selector, geom::point<float, 2> const & position, std::function<void()> on_canceled = nullptr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -237,7 +237,7 @@ namespace psemek::ui
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool spawn(element * root, std::shared_ptr<selector> selector, geom::point<float, 2> const & position)
|
bool spawn(element * root, std::shared_ptr<selector> selector, geom::point<float, 2> const & position, std::function<void()> on_canceled)
|
||||||
{
|
{
|
||||||
ui::screen * screen = find_last_parent_of_type<struct screen>(root);
|
ui::screen * screen = find_last_parent_of_type<struct screen>(root);
|
||||||
if (!screen)
|
if (!screen)
|
||||||
|
|
@ -248,8 +248,10 @@ namespace psemek::ui
|
||||||
positioner->set_child(selector);
|
positioner->set_child(selector);
|
||||||
event_interceptor->set_child(positioner);
|
event_interceptor->set_child(positioner);
|
||||||
|
|
||||||
auto close = [selector_root = event_interceptor.get(), selector = selector.get()]{
|
auto close = [selector_root = event_interceptor.get(), selector = selector.get(), on_canceled]{
|
||||||
selector->on_selected([](std::size_t){});
|
selector->on_selected([](std::size_t){});
|
||||||
|
if (on_canceled)
|
||||||
|
on_canceled();
|
||||||
|
|
||||||
auto p = dynamic_cast<struct screen *>(selector_root->parent());
|
auto p = dynamic_cast<struct screen *>(selector_root->parent());
|
||||||
if (p)
|
if (p)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue