1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Handle display lists without a (0, 0) root node

This commit is contained in:
ed 2019-01-14 10:28:59 +00:00
parent a5d546b25d
commit 2e532329a7

View file

@ -326,19 +326,36 @@ void Displays::updateToLogical()
DisplayNode node;
node.display = &d;
if (d.totalArea.getTopLeft() == Point<int>())
node.isRoot = true;
displayNodes.add (node);
}
DisplayNode* root = nullptr;
for (auto& node : displayNodes)
auto* root = [&displayNodes]() -> DisplayNode*
{
if (node.display->totalArea.getTopLeft() == Point<int>())
for (auto& node : displayNodes)
if (node.isRoot)
return &node;
auto minDistance = std::numeric_limits<int>::max();
DisplayNode* retVal = nullptr;
for (auto& node : displayNodes)
{
root = &node;
root->isRoot = true;
break;
auto distance = node.display->totalArea.getTopLeft().getDistanceFrom ({});
if (distance < minDistance)
{
minDistance = distance;
retVal = &node;
}
}
}
retVal->isRoot = true;
return retVal;
}();
// Must have a root node!
jassert (root != nullptr);