diff --git a/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp b/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp index bad49aea03..9e05e9821b 100644 --- a/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp +++ b/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp @@ -64,7 +64,7 @@ void BubbleComponent::setPosition (Component* componentToPointTo, int distanceFr if (Component* p = getParentComponent()) target = p->getLocalArea (componentToPointTo, componentToPointTo->getLocalBounds()); else - target = componentToPointTo->getScreenBounds(); + target = componentToPointTo->getScreenBounds().transformedBy (getTransform().inverted()); setPosition (target, distanceFromTarget, arrowLength); } @@ -87,7 +87,7 @@ void BubbleComponent::setPosition (Rectangle rectangleToPointTo, const int totalH = content.getHeight() + distanceFromTarget * 2; const Rectangle availableSpace (getParentComponent() != nullptr ? getParentComponent()->getLocalBounds() - : getParentMonitorArea()); + : getParentMonitorArea().transformedBy (getTransform().inverted())); int spaceAbove = ((allowablePlacements & above) != 0) ? jmax (0, rectangleToPointTo.getY() - availableSpace.getY()) : -1; int spaceBelow = ((allowablePlacements & below) != 0) ? jmax (0, availableSpace.getBottom() - rectangleToPointTo.getBottom()) : -1; @@ -145,8 +145,7 @@ void BubbleComponent::setPosition (Rectangle rectangleToPointTo, } } - auto origin = Point (targetX - arrowTip.x, targetY - arrowTip.y).transformedBy (getTransform().inverted()); - setBounds (origin.getX(), origin.getY(), totalW, totalH); + setBounds (targetX - arrowTip.x, targetY - arrowTip.y, totalW, totalH); } } // namespace juce