From 9d8920b4cda69f2fdc473d498a459a20ad197a37 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 24 Aug 2017 22:07:32 -0400 Subject: [PATCH] Canvas::Item container operations need to be virtual; add parented() virtual method for lazy child positioning --- libs/canvas/canvas/item.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libs/canvas/canvas/item.h b/libs/canvas/canvas/item.h index 1b5a24d794..3f4f597b1d 100644 --- a/libs/canvas/canvas/item.h +++ b/libs/canvas/canvas/item.h @@ -209,10 +209,10 @@ public: void* get_data (std::string const &) const; /* nested item ("grouping") API */ - void add (Item *); - void add_front (Item *); - void remove (Item *); - void clear (bool with_delete = false); + virtual void add (Item *); + virtual void add_front (Item *); + virtual void remove (Item *); + virtual void clear_children (bool with_delete = false); std::list const & items () const { return _items; } @@ -321,6 +321,11 @@ protected: Duple scroll_offset() const; Duple position_offset() const; + /* called when _parent is set to a non-null value. Containers can use + this to do size calculations less frequently. + */ + virtual void parented() {} + private: void init ();