diff --git a/modules/juce_gui_basics/layout/juce_Viewport.cpp b/modules/juce_gui_basics/layout/juce_Viewport.cpp index bc8a8c92d0..edb0ba2503 100644 --- a/modules/juce_gui_basics/layout/juce_Viewport.cpp +++ b/modules/juce_gui_basics/layout/juce_Viewport.cpp @@ -110,8 +110,13 @@ int Viewport::getMaximumVisibleHeight() const { return contentHolder.getHeight Point Viewport::viewportPosToCompPos (Point pos) const { jassert (contentComp != nullptr); - return Point (jmax (jmin (0, contentHolder.getWidth() - contentComp->getWidth()), jmin (0, -(pos.x))), - jmax (jmin (0, contentHolder.getHeight() - contentComp->getHeight()), jmin (0, -(pos.y)))); + + Rectangle contentBounds = contentHolder.getLocalArea (contentComp, contentComp->getLocalBounds()); + Point p (jmax (jmin (0, contentHolder.getWidth() - contentBounds.getWidth()), jmin (0, -(pos.x))), + jmax (jmin (0, contentHolder.getHeight() - contentBounds.getHeight()), jmin (0, -(pos.y)))); + + + return p.transformedBy (contentComp->getTransform().inverted()); } void Viewport::setViewPosition (const int xPixelsOffset, const int yPixelsOffset)