Canvas: fix updating placements after non matching placements
This commit is contained in:
+15
-10
@@ -466,21 +466,26 @@ namespace canvas
|
|||||||
if( node->getParent()->getParent() == _node
|
if( node->getParent()->getParent() == _node
|
||||||
&& node->getParent()->getNameString() == "placement" )
|
&& node->getParent()->getNameString() == "placement" )
|
||||||
{
|
{
|
||||||
bool placement_dirty = false;
|
size_t index = node->getIndex();
|
||||||
BOOST_FOREACH(Placements& placements, _placements)
|
if( index < _placements.size() )
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(PlacementPtr& placement, placements)
|
Placements& placements = _placements[index];
|
||||||
|
if( !placements.empty() )
|
||||||
{
|
{
|
||||||
// check if change can be directly handled by placement
|
bool placement_dirty = false;
|
||||||
if( placement->getProps() == node->getParent()
|
BOOST_FOREACH(PlacementPtr& placement, placements)
|
||||||
&& !placement->childChanged(node) )
|
{
|
||||||
placement_dirty = true;
|
// check if change can be directly handled by placement
|
||||||
|
if( placement->getProps() == node->getParent()
|
||||||
|
&& !placement->childChanged(node) )
|
||||||
|
placement_dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !placement_dirty )
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !placement_dirty )
|
|
||||||
return;
|
|
||||||
|
|
||||||
// prevent double updates...
|
// prevent double updates...
|
||||||
for( size_t i = 0; i < _dirty_placements.size(); ++i )
|
for( size_t i = 0; i < _dirty_placements.size(); ++i )
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user