|
|
|
@@ -990,7 +990,7 @@ public: |
|
|
|
|
|
|
|
if (popupDisplay == nullptr)
|
|
|
|
{
|
|
|
|
popupDisplay.reset (new PopupDisplayComponent (owner));
|
|
|
|
popupDisplay.reset (new PopupDisplayComponent (owner, parentForPopupDisplay == nullptr));
|
|
|
|
|
|
|
|
if (parentForPopupDisplay != nullptr)
|
|
|
|
parentForPopupDisplay->addChildComponent (popupDisplay.get());
|
|
|
|
@@ -1275,10 +1275,13 @@ public: |
|
|
|
struct PopupDisplayComponent : public BubbleComponent,
|
|
|
|
public Timer
|
|
|
|
{
|
|
|
|
PopupDisplayComponent (Slider& s)
|
|
|
|
PopupDisplayComponent (Slider& s, bool isOnDesktop)
|
|
|
|
: owner (s),
|
|
|
|
font (s.getLookAndFeel().getSliderPopupFont (s))
|
|
|
|
{
|
|
|
|
if (isOnDesktop)
|
|
|
|
setTransform (AffineTransform::scale (getApproximateScaleFactor (&s)));
|
|
|
|
|
|
|
|
setAlwaysOnTop (true);
|
|
|
|
setAllowedPlacement (owner.getLookAndFeel().getSliderPopupPlacement (s));
|
|
|
|
setLookAndFeel (&s.getLookAndFeel());
|
|
|
|
@@ -1316,6 +1319,22 @@ public: |
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
static float getApproximateScaleFactor (Component* targetComponent)
|
|
|
|
{
|
|
|
|
AffineTransform transform;
|
|
|
|
|
|
|
|
for (Component* target = targetComponent; target != nullptr; target = target->getParentComponent())
|
|
|
|
{
|
|
|
|
transform = transform.followedBy (target->getTransform());
|
|
|
|
|
|
|
|
if (target->isOnDesktop())
|
|
|
|
transform = transform.scaled (target->getDesktopScaleFactor());
|
|
|
|
}
|
|
|
|
|
|
|
|
return (transform.getScaleFactor() / Desktop::getInstance().getGlobalScaleFactor());
|
|
|
|
}
|
|
|
|
|
|
|
|
//==============================================================================
|
|
|
|
Slider& owner;
|
|
|
|
Font font;
|
|
|
|
String text;
|
|
|
|
|