summaryrefslogtreecommitdiff
path: root/libs/canvas/canvas
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-01-20 12:08:58 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2017-01-24 22:45:22 +0100
commitd1c1d8df614672b00a9835ae04566b12d21be697 (patch)
tree7e79d4081e64bc013c18cc8f4d7ec8656eb0ecff /libs/canvas/canvas
parentf2c31a3098addc1ef2731e4db7132a821302bbc4 (diff)
add basic data members and methods for adding an explicit size allocation for Canvas::Item
Diffstat (limited to 'libs/canvas/canvas')
-rw-r--r--libs/canvas/canvas/item.h14
1 files changed, 13 insertions, 1 deletions
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<std::string, void *> _data;