Browse Source

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

tags/2021-05-28
ed 7 years ago
parent
commit
a63f1808fc
1 changed files with 16 additions and 2 deletions
  1. +16
    -2
      modules/juce_gui_basics/widgets/juce_Slider.cpp

+ 16
- 2
modules/juce_gui_basics/widgets/juce_Slider.cpp 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;
}


Loading…
Cancel
Save