Support mouseover callback in ui::selector
This commit is contained in:
parent
b5145b9596
commit
8354ee1753
2 changed files with 10 additions and 0 deletions
|
|
@ -39,6 +39,7 @@ namespace psemek::ui
|
||||||
|
|
||||||
virtual std::optional<std::size_t> selected() const { return selected_; }
|
virtual std::optional<std::size_t> selected() const { return selected_; }
|
||||||
virtual void on_selected(callback_type callback);
|
virtual void on_selected(callback_type callback);
|
||||||
|
virtual void on_mouseover(std::function<void(std::optional<std::size_t>)> callback);
|
||||||
|
|
||||||
virtual callback_type on_selected() const;
|
virtual callback_type on_selected() const;
|
||||||
|
|
||||||
|
|
@ -68,6 +69,7 @@ namespace psemek::ui
|
||||||
std::optional<std::size_t> selected_;
|
std::optional<std::size_t> selected_;
|
||||||
|
|
||||||
callback_type callback_;
|
callback_type 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);
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,9 @@ namespace psemek::ui
|
||||||
if (new_selected && new_selected != selected_)
|
if (new_selected && new_selected != selected_)
|
||||||
on_submenu(*new_selected);
|
on_submenu(*new_selected);
|
||||||
|
|
||||||
|
if (new_selected != selected_ && mouseover_callback_)
|
||||||
|
post([cb = mouseover_callback_, i = new_selected]{ cb(i); });
|
||||||
|
|
||||||
selected_ = new_selected;
|
selected_ = new_selected;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -187,6 +190,11 @@ namespace psemek::ui
|
||||||
callback_ = std::move(callback);
|
callback_ = std::move(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void selector::on_mouseover(std::function<void(std::optional<std::size_t>)> callback)
|
||||||
|
{
|
||||||
|
mouseover_callback_ = std::move(callback);
|
||||||
|
}
|
||||||
|
|
||||||
selector::callback_type selector::on_selected() const
|
selector::callback_type selector::on_selected() const
|
||||||
{
|
{
|
||||||
return callback_;
|
return callback_;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue