1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-27 02:20:05 +00:00

Fixed a bug where a Slider popup display added to a parent component would never be dismissed

This commit is contained in:
ed 2017-10-24 15:57:16 +01:00
parent 4d821219f8
commit a63f1808fc

View file

@ -841,7 +841,9 @@ public:
if (showPopupOnDrag || showPopupOnHover)
{
showPopupDisplay();
popupDisplay->stopTimer();
if (popupDisplay != nullptr)
popupDisplay->stopTimer();
}
currentDrag = new DragInProgress (*this);
@ -951,7 +953,12 @@ public:
auto isTwoValue = (style == TwoValueHorizontal || style == TwoValueVertical);
auto isThreeValue = (style == ThreeValueHorizontal || style == ThreeValueVertical);
if (showPopupOnHover
// this is a workaround for a bug where the popup display being dismissed triggers
// a mouse move causing it to never be hidden
auto shouldShowPopup = showPopupOnHover
&& (Time::getMillisecondCounterHiRes() - lastPopupDismissal) > 250;
if (shouldShowPopup
&& ! isTwoValue
&& ! isThreeValue)
{
@ -1254,6 +1261,7 @@ public:
bool snapsToMousePos = true;
int popupHoverTimeout = 2000;
double lastPopupDismissal = 0.0;
ScopedPointer<Label> valueBox;
ScopedPointer<Button> incButton, decButton;
@ -1271,6 +1279,11 @@ public:
setLookAndFeel (&s.getLookAndFeel());
}
~PopupDisplayComponent()
{
owner.pimpl->lastPopupDismissal = Time::getMillisecondCounterHiRes();
}
void paintContent (Graphics& g, int w, int h) override
{
g.setFont (font);
@ -1293,6 +1306,7 @@ public:
void timerCallback() override
{
stopTimer();
owner.pimpl->popupDisplay = nullptr;
}