13
0

Canvas: auto-fy a couple of lops in Box::reposition_children()

This commit is contained in:
Paul Davis 2024-11-05 14:58:44 -07:00
parent e6758b6ba8
commit a3deba207e

View File

@ -194,40 +194,40 @@ Box::size_request (Distance& w, Distance& h) const
{ {
PBD::Unwinder<bool> uw (ignore_child_changes, true); PBD::Unwinder<bool> uw (ignore_child_changes, true);
for (std::list<Item*>::const_iterator i = _items.begin(); i != _items.end(); ++i) { for (auto const & item : _items) {
double width; double width;
double height; double height;
Rect isize; Rect isize;
(*i)->size_request (width, height); item->size_request (width, height);
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, desires %2 x %3\n", (*i)->whoami(), width, height)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, desires %2 x %3\n", item->whoami(), width, height));
if (homogenous) { if (homogenous) {
if (((*i)->pack_options() & PackOptions (PackExpand|PackFill)) == PackOptions (PackExpand|PackFill)) { if ((item->pack_options() & PackOptions (PackExpand|PackFill)) == PackOptions (PackExpand|PackFill)) {
if (orientation == Vertical) { if (orientation == Vertical) {
/* use the item's own height and our computed width */ /* use the item's own height and our computed width */
isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + uniform_size.width(), previous_edge.y + height); isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + uniform_size.width(), previous_edge.y + height);
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use computed width to give %2\n", (*i)->whoami(), isize)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use computed width to give %2\n", item->whoami(), isize));
} else { } else {
/* use the item's own width and our computed height */ /* use the item's own width and our computed height */
isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + uniform_size.height()); isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + uniform_size.height());
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use computed height to give %2\n", (*i)->whoami(), isize)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use computed height to give %2\n", item->whoami(), isize));
} }
} else { } else {
isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height); isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height);
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use item size to give %2\n", (*i)->whoami(), isize)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use item size to give %2\n", item->whoami(), isize));
} }
} else { } else {
isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height); isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height);
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use item size (non-homogenous) to give %2\n", (*i)->whoami(), isize)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use item size (non-homogenous) to give %2\n", item->whoami(), isize));
} }
width = isize.width(); width = isize.width();
height = isize.height(); height = isize.height();
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, initial size %2 x %3\n", (*i)->whoami(), width, height)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, initial size %2 x %3\n", item->whoami(), width, height));
r = r.extend (Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height)); r = r.extend (Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height));
@ -237,7 +237,7 @@ Box::size_request (Distance& w, Distance& h) const
Distance shift = 0; Distance shift = 0;
if (!(*i)->visible()) { if (!item->visible()) {
/* invisible child */ /* invisible child */
if (!collapse_on_hide) { if (!collapse_on_hide) {
/* still add in its size */ /* still add in its size */
@ -253,7 +253,7 @@ Box::size_request (Distance& w, Distance& h) const
Distance shift = 0; Distance shift = 0;
if (!(*i)->visible()) { if (!item->visible()) {
if (!collapse_on_hide) { if (!collapse_on_hide) {
shift += width; shift += width;
} }
@ -289,13 +289,13 @@ Box::reposition_children (Distance width, Distance height, bool shrink_width, bo
return; return;
} }
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("allocating children within %1 x %2, shrink/w %3 shrink/h %4\n", width, height, shrink_width, shrink_height)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("allocating children within %1 x %2, shrink/w %3 shrink/h %4 homog %5\n", width, height, shrink_width, shrink_height, homogenous));
if (homogenous) { if (homogenous) {
for (std::list<Item*>::const_iterator i = _items.begin(); i != _items.end(); ++i) { for (auto const & item : _items) {
Distance iw, ih; Distance iw, ih;
(*i)->size_request (iw, ih); item->size_request (iw, ih);
if (!shrink_height) { if (!shrink_height) {
largest_height = std::max (largest_height, ih); largest_height = std::max (largest_height, ih);
} }
@ -338,36 +338,37 @@ Box::reposition_children (Distance width, Distance height, bool shrink_width, bo
{ {
PBD::Unwinder<bool> uw (ignore_child_changes, true); PBD::Unwinder<bool> uw (ignore_child_changes, true);
for (std::list<Item*>::const_iterator i = _items.begin(); i != _items.end(); ++i) { for (auto const & item : _items) {
double width; double width;
double height; double height;
Rect isize; Rect isize;
(*i)->size_request (width, height); item->size_request (width, height);
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, desires %2 x %3\n", item->whoami(), width, height));
if (homogenous) { if (homogenous) {
if (((*i)->pack_options() & PackOptions (PackExpand|PackFill)) == PackOptions (PackExpand|PackFill)) { if ((item->pack_options() & PackOptions (PackExpand|PackFill)) == PackOptions (PackExpand|PackFill)) {
if (orientation == Vertical) { if (orientation == Vertical) {
/* use the item's own height and our computed width */ /* use the item's own height and our computed width */
isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + uniform_size.width(), previous_edge.y + height); isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + uniform_size.width(), previous_edge.y + height);
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use computed width to give %2\n", (*i)->whoami(), isize)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use computed width to give %2\n", item->whoami(), isize));
} else { } else {
/* use the item's own width and our computed height */ /* use the item's own width and our computed height */
isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + uniform_size.height()); isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + uniform_size.height());
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use computed height to give %2\n", (*i)->whoami(), isize)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use computed height to give %2\n", item->whoami(), isize));
} }
} else { } else {
isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height); isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height);
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use item size to give %2\n", (*i)->whoami(), isize)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use item size to give %2\n", item->whoami(), isize));
} }
} else { } else {
isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height); isize = Rect (previous_edge.x, previous_edge.y, previous_edge.x + width, previous_edge.y + height);
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use item size %2 x %3 (non-homogenous) to give %4\n", (*i)->whoami(), width, height, isize)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1, use item size %2 x %3 (non-homogenous) to give %4\n", item->whoami(), width, height, isize));
} }
DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1 allocating %2\n", (*i)->whoami(), isize)); DEBUG_TRACE (DEBUG::CanvasBox|DEBUG::CanvasSizeAllocate, string_compose ("\t%1 allocating %2\n", item->whoami(), isize));
(*i)->size_allocate (isize); item->size_allocate (isize);
width = isize.width(); width = isize.width();
height = isize.height(); height = isize.height();
@ -376,7 +377,7 @@ Box::reposition_children (Distance width, Distance height, bool shrink_width, bo
Distance shift = 0; Distance shift = 0;
if (!(*i)->visible()) { if (!item->visible()) {
/* invisible child */ /* invisible child */
if (!collapse_on_hide) { if (!collapse_on_hide) {
/* still add in its size */ /* still add in its size */
@ -392,7 +393,7 @@ Box::reposition_children (Distance width, Distance height, bool shrink_width, bo
Distance shift = 0; Distance shift = 0;
if (!(*i)->visible()) { if (!item->visible()) {
if (!collapse_on_hide) { if (!collapse_on_hide) {
shift += width; shift += width;
} }