top_level_drawable: Implement copy and move constructors

This commit is contained in:
Tommy 2022-07-21 01:46:27 +12:00
parent afd6baa7cf
commit f6763be08b
3 changed files with 31 additions and 1 deletions

View file

@ -290,9 +290,10 @@ void raise_drawable(top_level_drawable* tld)
static void tidy_drawables() static void tidy_drawables()
{ {
// Remove all invalidated TLDs from the list. // Remove all invalidated TLDs from the list.
DBG_DM << "tidying drawables"; DBG_DM << "tidying " << top_level_drawables_.size() << " drawables";
auto& vec = top_level_drawables_; auto& vec = top_level_drawables_;
vec.erase(std::remove(vec.begin(), vec.end(), nullptr), vec.end()); vec.erase(std::remove(vec.begin(), vec.end(), nullptr), vec.end());
DBG_DM << top_level_drawables_.size() << " after tidying";
} }
} // namespace draw_manager } // namespace draw_manager

View file

@ -29,4 +29,26 @@ top_level_drawable::~top_level_drawable()
draw_manager::deregister_drawable(this); draw_manager::deregister_drawable(this);
} }
top_level_drawable::top_level_drawable(const top_level_drawable&)
{
draw_manager::register_drawable(this);
}
top_level_drawable& top_level_drawable::operator=(const top_level_drawable&)
{
draw_manager::register_drawable(this);
return *this;
}
top_level_drawable::top_level_drawable(top_level_drawable&&)
{
draw_manager::register_drawable(this);
}
top_level_drawable& top_level_drawable::operator=(top_level_drawable&&)
{
draw_manager::register_drawable(this);
return *this;
}
} // namespace gui2 } // namespace gui2

View file

@ -53,6 +53,13 @@ class top_level_drawable
protected: protected:
top_level_drawable(); top_level_drawable();
virtual ~top_level_drawable(); virtual ~top_level_drawable();
// These make sure the TLD is registered.
top_level_drawable(const top_level_drawable&);
top_level_drawable& operator=(const top_level_drawable&);
top_level_drawable(top_level_drawable&&);
top_level_drawable& operator=(top_level_drawable&&);
public: public:
/** /**
* Update state and any parameters that may effect layout, or any of * Update state and any parameters that may effect layout, or any of