Support moving ui::screen child to top
This commit is contained in:
parent
203d0504ac
commit
a567cbbbf5
2 changed files with 17 additions and 2 deletions
|
|
@ -34,8 +34,9 @@ namespace psemek::ui
|
||||||
|
|
||||||
bool add_child(std::shared_ptr<element> c, x_policy x, y_policy y);
|
bool add_child(std::shared_ptr<element> c, x_policy x, y_policy y);
|
||||||
bool add_child(std::shared_ptr<element> c) override;
|
bool add_child(std::shared_ptr<element> c) override;
|
||||||
bool has_child(element *c) const override;
|
bool has_child(element * c) const override;
|
||||||
std::shared_ptr<element> remove_child(element * c) override;
|
std::shared_ptr<element> remove_child(element * c) override;
|
||||||
|
bool move_to_top(element * c);
|
||||||
|
|
||||||
struct shape const & shape() const override { return shape_; }
|
struct shape const & shape() const override { return shape_; }
|
||||||
void reshape(geom::box<float, 2> const & bbox) override;
|
void reshape(geom::box<float, 2> const & bbox) override;
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ namespace psemek::ui
|
||||||
return add_child(std::move(c), x_policy::floating, y_policy::floating);
|
return add_child(std::move(c), x_policy::floating, y_policy::floating);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool screen::has_child(element *c) const
|
bool screen::has_child(element * c) const
|
||||||
{
|
{
|
||||||
return static_cast<bool>(container_.find(c));
|
return static_cast<bool>(container_.find(c));
|
||||||
}
|
}
|
||||||
|
|
@ -37,6 +37,20 @@ namespace psemek::ui
|
||||||
return container_.remove(c);
|
return container_.remove(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool screen::move_to_top(element * c)
|
||||||
|
{
|
||||||
|
if (auto idx = container_.find(c))
|
||||||
|
{
|
||||||
|
auto e = container_.remove(*idx);
|
||||||
|
auto new_idx = container_.size();
|
||||||
|
container_.add(e, new_idx);
|
||||||
|
policies_.resize(container_.size());
|
||||||
|
policies_[new_idx] = policies_[*idx];
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void screen::reshape(geom::box<float, 2> const & bbox)
|
void screen::reshape(geom::box<float, 2> const & bbox)
|
||||||
{
|
{
|
||||||
shape_.box = bbox;
|
shape_.box = bbox;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue