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:
parent
a5d546b25d
commit
2e532329a7
1 changed files with 24 additions and 7 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue