From b85726a646806bf593f9f4e4570276c9cae875e7 Mon Sep 17 00:00:00 2001 From: hogliux Date: Wed, 30 May 2018 17:28:24 +0100 Subject: [PATCH] BubbleComponent: Correctly convert screen coordinates for BubbleComponents that have a custom AffineTransforms --- modules/juce_gui_basics/misc/juce_BubbleComponent.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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