From 63bbb3837488611eedd707f1a09e6590d3e69679 Mon Sep 17 00:00:00 2001 From: Celtic Minstrel Date: Thu, 27 Feb 2025 00:00:17 -0500 Subject: [PATCH] Fix an infinite loop when using a container as an anchor for another widget --- src/dialogxml/dialogs/dialog.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/dialogxml/dialogs/dialog.cpp b/src/dialogxml/dialogs/dialog.cpp index 32cc99d5..f030c4b3 100644 --- a/src/dialogxml/dialogs/dialog.cpp +++ b/src/dialogxml/dialogs/dialog.cpp @@ -301,12 +301,13 @@ void cDialog::loadFromFile(const DialogDefn& file){ } if(auto pane = dynamic_cast(anchor)) { // If the anchor is a container, make sure to resolve its contents first. - pane->forEach([&all_resolved](const std::string&, cControl& ctrl) { + bool all_children_resolved = true; + pane->forEach([&all_children_resolved](const std::string&, cControl& ctrl) { if(!ctrl.anchor.empty()) { - all_resolved = false; + all_children_resolved = false; } }); - if(!all_resolved) return; + if(!all_children_resolved) return; pane->recalcRect(); } ctrl.relocateRelative(ctrl.frame.topLeft(), anchor, ctrl.horz, ctrl.vert);