diff --git a/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp b/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp index 97c20a149f..235baebf34 100644 --- a/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp +++ b/modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp @@ -79,10 +79,16 @@ void ComponentMovementWatcher::componentMovedOrResized (Component&, bool wasMove { if (wasMoved) { - const Point pos (component->getTopLevelComponent()->getLocalPoint (component, Point())); + Point newPos; + Component* const top = component->getTopLevelComponent(); - wasMoved = lastBounds.getPosition() != pos; - lastBounds.setPosition (pos); + if (top != component) + newPos = top->getLocalPoint (component, Point()); + else + newPos = top->getPosition(); + + wasMoved = lastBounds.getPosition() != newPos; + lastBounds.setPosition (newPos); } wasResized = (lastBounds.getWidth() != component->getWidth() || lastBounds.getHeight() != component->getHeight());