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) if (showPopupOnDrag || showPopupOnHover)
{ {
showPopupDisplay(); showPopupDisplay();
popupDisplay->stopTimer();
if (popupDisplay != nullptr)
popupDisplay->stopTimer();
} }
currentDrag = new DragInProgress (*this); currentDrag = new DragInProgress (*this);
@@ -951,7 +953,12 @@ public:
auto isTwoValue = (style == TwoValueHorizontal || style == TwoValueVertical); auto isTwoValue = (style == TwoValueHorizontal || style == TwoValueVertical);
auto isThreeValue = (style == ThreeValueHorizontal || style == ThreeValueVertical); 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 && ! isTwoValue
&& ! isThreeValue) && ! isThreeValue)
{ {
@@ -1254,6 +1261,7 @@ public:
bool snapsToMousePos = true; bool snapsToMousePos = true;
int popupHoverTimeout = 2000; int popupHoverTimeout = 2000;
double lastPopupDismissal = 0.0;
ScopedPointer<Label> valueBox; ScopedPointer<Label> valueBox;
ScopedPointer<Button> incButton, decButton; ScopedPointer<Button> incButton, decButton;
@@ -1271,6 +1279,11 @@ public:
setLookAndFeel (&s.getLookAndFeel()); setLookAndFeel (&s.getLookAndFeel());
} }
~PopupDisplayComponent()
{
owner.pimpl->lastPopupDismissal = Time::getMillisecondCounterHiRes();
}
void paintContent (Graphics& g, int w, int h) override void paintContent (Graphics& g, int w, int h) override
{ {
g.setFont (font); g.setFont (font);
@@ -1293,6 +1306,7 @@ public:
void timerCallback() override void timerCallback() override
{ {
stopTimer();
owner.pimpl->popupDisplay = nullptr; owner.pimpl->popupDisplay = nullptr;
} }


Loading…
Cancel
Save