| 
																	
																	
																		
																	
																	
																 | 
																@@ -164,7 +164,7 @@ String TooltipWindow::getTipFor (Component& c) | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void TooltipWindow::hideTip()
 | 
																 | 
																 | 
																void TooltipWindow::hideTip()
 | 
															
														
														
													
														
															
																 | 
																 | 
																{
 | 
																 | 
																 | 
																{
 | 
															
														
														
													
														
															
																 | 
																 | 
																    if (! reentrant)
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (isVisible() && ! reentrant)
 | 
															
														
														
													
														
															
																 | 
																 | 
																    {
 | 
																 | 
																 | 
																    {
 | 
															
														
														
													
														
															
																 | 
																 | 
																        tipShowing = {};
 | 
																 | 
																 | 
																        tipShowing = {};
 | 
															
														
														
													
														
															
																 | 
																 | 
																        manuallyShownTip = {};
 | 
																 | 
																 | 
																        manuallyShownTip = {};
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -173,6 +173,8 @@ void TooltipWindow::hideTip() | 
															
														
														
													
														
															
																 | 
																 | 
																        removeFromDesktop();
 | 
																 | 
																 | 
																        removeFromDesktop();
 | 
															
														
														
													
														
															
																 | 
																 | 
																        setVisible (false);
 | 
																 | 
																 | 
																        setVisible (false);
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        lastHideTime = Time::getApproximateMillisecondCounter();
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																       #if JUCE_DEBUG
 | 
																 | 
																 | 
																       #if JUCE_DEBUG
 | 
															
														
														
													
														
															
																 | 
																 | 
																        activeTooltipWindows.removeAllInstancesOf (this);
 | 
																 | 
																 | 
																        activeTooltipWindows.removeAllInstancesOf (this);
 | 
															
														
														
													
														
															
																 | 
																 | 
																       #endif
 | 
																 | 
																 | 
																       #endif
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -194,25 +196,20 @@ std::unique_ptr<AccessibilityHandler> TooltipWindow::createAccessibilityHandler( | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void TooltipWindow::timerCallback()
 | 
																 | 
																 | 
																void TooltipWindow::timerCallback()
 | 
															
														
														
													
														
															
																 | 
																 | 
																{
 | 
																 | 
																 | 
																{
 | 
															
														
														
													
														
															
																 | 
																 | 
																    auto& desktop = Desktop::getInstance();
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    auto mouseSource = desktop.getMainMouseSource();
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    auto now = Time::getApproximateMillisecondCounter();
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    const auto mouseSource = Desktop::getInstance().getMainMouseSource();
 | 
															
														
														
													
														
															
																 | 
																 | 
																    auto* newComp = mouseSource.isTouch() ? nullptr : mouseSource.getComponentUnderMouse();
 | 
																 | 
																 | 
																    auto* newComp = mouseSource.isTouch() ? nullptr : mouseSource.getComponentUnderMouse();
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																    if (newComp == nullptr || getParentComponent() == nullptr || newComp->getPeer() == getPeer())
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (manuallyShownTip.isNotEmpty())
 | 
															
														
														
													
														
															
																 | 
																 | 
																    {
 | 
																 | 
																 | 
																    {
 | 
															
														
														
													
														
															
																 | 
																 | 
																        const auto componentChanged = (newComp != lastComponentUnderMouse);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if (dismissalMouseEventOccured || newComp == nullptr)
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            hideTip();
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																        const auto newTip = [this, &newComp, componentChanged]
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        {
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            if (dynamic_cast<TooltipClient*> (newComp) != nullptr)
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                return getTipFor (*newComp);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            return componentChanged ? String() : manuallyShownTip;
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        }();
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        return;
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    }
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																        const auto tipChanged = (newTip != lastTipUnderMouse || componentChanged);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (newComp == nullptr || getParentComponent() == nullptr || newComp->getPeer() == getPeer())
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    {
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        const auto newTip = newComp != nullptr ? getTipFor (*newComp) : String();
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																        lastComponentUnderMouse = newComp;
 | 
																 | 
																 | 
																        lastComponentUnderMouse = newComp;
 | 
															
														
														
													
														
															
																 | 
																 | 
																        lastTipUnderMouse = newTip;
 | 
																 | 
																 | 
																        lastTipUnderMouse = newTip;
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -221,19 +218,16 @@ void TooltipWindow::timerCallback() | 
															
														
														
													
														
															
																 | 
																 | 
																        const auto mouseMovedQuickly = (mousePos.getDistanceFrom (lastMousePos) > 12);
 | 
																 | 
																 | 
																        const auto mouseMovedQuickly = (mousePos.getDistanceFrom (lastMousePos) > 12);
 | 
															
														
														
													
														
															
																 | 
																 | 
																        lastMousePos = mousePos;
 | 
																 | 
																 | 
																        lastMousePos = mousePos;
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        const auto tipChanged = (newTip != lastTipUnderMouse || newComp != lastComponentUnderMouse);
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        const auto now = Time::getApproximateMillisecondCounter();
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (tipChanged || dismissalMouseEventOccured || mouseMovedQuickly)
 | 
																 | 
																 | 
																        if (tipChanged || dismissalMouseEventOccured || mouseMovedQuickly)
 | 
															
														
														
													
														
															
																 | 
																 | 
																            lastCompChangeTime = now;
 | 
																 | 
																 | 
																            lastCompChangeTime = now;
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																        auto showTip = [this, &mouseSource, &mousePos, &newTip]
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        const auto showTip = [this, &mouseSource, &mousePos, &newTip]
 | 
															
														
														
													
														
															
																 | 
																 | 
																        {
 | 
																 | 
																 | 
																        {
 | 
															
														
														
													
														
															
																 | 
																 | 
																            if (mouseSource.getLastMouseDownPosition() == lastMousePos)
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                return;
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            const auto isShowingManualTip = (manuallyShownTip.isNotEmpty() && manuallyShownTip == newTip);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            displayTipInternal (mousePos.roundToInt(),
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                                newTip,
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                                isShowingManualTip ? ShownManually::yes : ShownManually::no);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (mouseSource.getLastMouseDownPosition() != lastMousePos)
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                displayTipInternal (mousePos.roundToInt(), newTip, ShownManually::no);
 | 
															
														
														
													
														
															
																 | 
																 | 
																        };
 | 
																 | 
																 | 
																        };
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (isVisible() || now < lastHideTime + 500)
 | 
																 | 
																 | 
																        if (isVisible() || now < lastHideTime + 500)
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -241,17 +235,9 @@ void TooltipWindow::timerCallback() | 
															
														
														
													
														
															
																 | 
																 | 
																            // if a tip is currently visible (or has just disappeared), update to a new one
 | 
																 | 
																 | 
																            // if a tip is currently visible (or has just disappeared), update to a new one
 | 
															
														
														
													
														
															
																 | 
																 | 
																            // immediately if needed..
 | 
																 | 
																 | 
																            // immediately if needed..
 | 
															
														
														
													
														
															
																 | 
																 | 
																            if (newComp == nullptr || dismissalMouseEventOccured || newTip.isEmpty())
 | 
																 | 
																 | 
																            if (newComp == nullptr || dismissalMouseEventOccured || newTip.isEmpty())
 | 
															
														
														
													
														
															
																 | 
																 | 
																            {
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                if (isVisible())
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                {
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                    lastHideTime = now;
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                    hideTip();
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                }
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            }
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                hideTip();
 | 
															
														
														
													
														
															
																 | 
																 | 
																            else if (tipChanged)
 | 
																 | 
																 | 
																            else if (tipChanged)
 | 
															
														
														
													
														
															
																 | 
																 | 
																            {
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                showTip();
 | 
																 | 
																 | 
																                showTip();
 | 
															
														
														
													
														
															
																 | 
																 | 
																            }
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        }
 | 
																 | 
																 | 
																        }
 | 
															
														
														
													
														
															
																 | 
																 | 
																        else
 | 
																 | 
																 | 
																        else
 | 
															
														
														
													
														
															
																 | 
																 | 
																        {
 | 
																 | 
																 | 
																        {
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |