Support retrieving item y-range from ui::selector

This commit is contained in:
Nikita Lisitsa 2022-04-30 16:52:23 +03:00
parent cc6691c633
commit 55d2a48ff2
2 changed files with 12 additions and 0 deletions

View file

@ -31,6 +31,8 @@ namespace psemek::ui
virtual bool submenu(std::size_t index) const;
virtual void clear();
virtual geom::interval<float> y_range(std::size_t index) const;
virtual std::optional<std::size_t> selected() const { return selected_; }
virtual void on_selected(std::function<void(std::size_t)> callback);

View file

@ -125,13 +125,17 @@ namespace psemek::ui
{
container_.resize(size);
submenu_.resize(size);
child_boxes_.resize(size);
}
void selector::add(std::shared_ptr<element> child, bool submenu)
{
std::size_t index = container_.add(child);
if (index >= submenu_.size())
{
submenu_.resize(index + 1);
child_boxes_.resize(submenu_.size());
}
submenu_[index] = submenu;
}
@ -149,6 +153,12 @@ namespace psemek::ui
{
container_.clear();
submenu_.clear();
child_boxes_.clear();
}
geom::interval<float> selector::y_range(std::size_t index) const
{
return child_boxes_[index][1];
}
void selector::on_selected(std::function<void(std::size_t)> callback)