From 35a9bcc4090a16e340bceea6aaea6b755ff9f8a1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 21 Nov 2018 14:06:47 -0500 Subject: [PATCH] add Rectangle::size_request() which returns actual rectangle size, not bounding box --- libs/canvas/canvas/rectangle.h | 2 ++ libs/canvas/item.cc | 2 ++ libs/canvas/rectangle.cc | 7 +++++++ 3 files changed, 11 insertions(+) diff --git a/libs/canvas/canvas/rectangle.h b/libs/canvas/canvas/rectangle.h index bc8a501714..9400ae991d 100644 --- a/libs/canvas/canvas/rectangle.h +++ b/libs/canvas/canvas/rectangle.h @@ -90,6 +90,8 @@ public: void set_outline_what (What); void set_outline_all () { set_outline_what (ArdourCanvas::Rectangle::ALL); } + void size_request (double& w, double& h) const; + private: /** Our rectangle; note that x0 may not always be less than x1 * and likewise with y0 and y1. diff --git a/libs/canvas/item.cc b/libs/canvas/item.cc index c444953960..250d13a998 100644 --- a/libs/canvas/item.cc +++ b/libs/canvas/item.cc @@ -614,6 +614,8 @@ Item::size_request (double& w, double& h) const { Rect r (bounding_box()); + std::cerr << "\titem " << this << " bbox " << r << std::endl; + w = std::max (requested_width, r.width()); h = std::max (requested_height, r.height()); } diff --git a/libs/canvas/rectangle.cc b/libs/canvas/rectangle.cc index 463ed7f86a..b52dd2a290 100644 --- a/libs/canvas/rectangle.cc +++ b/libs/canvas/rectangle.cc @@ -161,6 +161,13 @@ Rectangle::render (Rect const & area, Cairo::RefPtr context) con render_children (area, context); } +void +Rectangle::size_request (double& w, double& h) const +{ + w = _rect.width(); + h = _rect.height(); +} + void Rectangle::compute_bounding_box () const {