diff --git a/extras/Projucer/Source/ComponentEditor/Components/jucer_ComponentTypeHandler.cpp b/extras/Projucer/Source/ComponentEditor/Components/jucer_ComponentTypeHandler.cpp index 249bdb83ed..792a77907f 100644 --- a/extras/Projucer/Source/ComponentEditor/Components/jucer_ComponentTypeHandler.cpp +++ b/extras/Projucer/Source/ComponentEditor/Components/jucer_ComponentTypeHandler.cpp @@ -572,7 +572,7 @@ void ComponentTypeHandler::fillInResizeCode (GeneratedCode& code, Component* com r << memberVariableName << "->setBounds (" << x << ", " << y << ", " << w << ", " << h << ");\n"; - if (pos.rect.isPositionAbsolute()) + if (pos.rect.isPositionAbsolute() && ! code.document->getComponentLayout()->isComponentPositionRelative (component)) code.constructorCode += r + "\n"; else code.getCallbackCode (String(), "void", "resized()", false) += r; diff --git a/extras/Projucer/Source/ComponentEditor/jucer_ComponentLayout.cpp b/extras/Projucer/Source/ComponentEditor/jucer_ComponentLayout.cpp index f3516b189b..d2542911b4 100644 --- a/extras/Projucer/Source/ComponentEditor/jucer_ComponentLayout.cpp +++ b/extras/Projucer/Source/ComponentEditor/jucer_ComponentLayout.cpp @@ -554,6 +554,15 @@ bool ComponentLayout::dependsOnComponentForRelativePos (Component* comp, Compone return false; } +bool ComponentLayout::isComponentPositionRelative (Component* comp) const +{ + for (int i = 0; i < getNumComponents(); ++i) + if (dependsOnComponentForRelativePos (comp, getComponent (i))) + return true; + + return false; +} + const int menuIdBase = 0x63240000; PopupMenu ComponentLayout::getRelativeTargetMenu (Component* comp, int whichDimension) const diff --git a/extras/Projucer/Source/ComponentEditor/jucer_ComponentLayout.h b/extras/Projucer/Source/ComponentEditor/jucer_ComponentLayout.h index 9c3c661e28..5c14a3f81e 100644 --- a/extras/Projucer/Source/ComponentEditor/jucer_ComponentLayout.h +++ b/extras/Projucer/Source/ComponentEditor/jucer_ComponentLayout.h @@ -71,6 +71,7 @@ public: void setComponentRelativeTarget (Component* comp, int whichDimension, Component* compToBeRelativeTo); // checks recursively whether the comp depends on the given comp for its position bool dependsOnComponentForRelativePos (Component* comp, Component* possibleDependee) const; + bool isComponentPositionRelative (Component* comp) const; PopupMenu getRelativeTargetMenu (Component* comp, int whichDimension) const; void processRelativeTargetMenuResult (Component* comp, int whichDimension, int menuResultID);