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_;
|
||||
};
|
||||
|
||||
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);
|
||||
if (!screen)
|
||||
|
|
@ -248,8 +248,10 @@ namespace psemek::ui
|
|||
positioner->set_child(selector);
|
||||
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){});
|
||||
if (on_canceled)
|
||||
on_canceled();
|
||||
|
||||
auto p = dynamic_cast<struct screen *>(selector_root->parent());
|
||||
if (p)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue