From d1c1d8df614672b00a9835ae04566b12d21be697 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 20 Jan 2017 12:08:58 +0100 Subject: add basic data members and methods for adding an explicit size allocation for Canvas::Item --- libs/canvas/canvas/item.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'libs/canvas/canvas') diff --git a/libs/canvas/canvas/item.h b/libs/canvas/canvas/item.h index 517b4401ba..a480ec38a1 100644 --- a/libs/canvas/canvas/item.h +++ b/libs/canvas/canvas/item.h @@ -136,7 +136,18 @@ public: ScrollGroup* scroll_parent() const { return _scroll_parent; } - Rect bounding_box () const; + /* item implementations can override this if they need to */ + virtual Rect size_request() const { return bounding_box (true); } + void size_allocate (Rect const&); + + /** bounding box is the public API to get the size of the item. + If @param for_own_purposes is false, then it will return the + allocated bounding box (if there is one) in preference to the + one that would naturally be computed by the item. + */ + Rect bounding_box (bool for_own_purposes = false) const; + Rect allocation() const { return _allocation; } + Coord height() const; Coord width() const; @@ -281,6 +292,7 @@ protected: mutable Rect _bounding_box; /** true if _bounding_box might be out of date, false if its definitely not */ mutable bool _bounding_box_dirty; + Rect _allocation; /* XXX: this is a bit grubby */ std::map _data; -- cgit v1.2.3