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 bool submenu(std::size_t index) const;
virtual void clear(); 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 std::optional<std::size_t> selected() const { return selected_; }
virtual void on_selected(std::function<void(std::size_t)> callback); virtual void on_selected(std::function<void(std::size_t)> callback);

View file

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