Still no way to get rid of that drop shadow on Slider's PopupDisplayComponent?


It’s a pity that the drop shadow under a Slider’s PopupDisplayComponent still can’t be disabled using the API.

Any chance this could be changed in a near future?

you can disable it:

int MyLookAndFeel::getMenuWindowFlags()
   return 0;

I’m sorry but this has nothing to do with it.

A Slider has its own PopupDisplayComponent, which is based on BubbleComponent. BubbleComponent's constructor is self explanatory:

  : allowablePlacements (above | below | left | right)
    setInterceptsMouseClicks (false, false);

    shadow.setShadowProperties (DropShadow (Colours::black.withAlpha (0.35f), 5, Point<int>()));
    setComponentEffect (&shadow);

It adds a shadow effect on itself and there’s nothing you can do against it without patching the library (which is not an option).

Any insight?

Ahh I see,

Apologies I’ve never used that piece of the class, the popups by default also have a drop shadow and it took a bit to figure out how to disable them.

I usually wrap my knobs up in a parent component and manage my popups / label interactions etc through that parent. That might do you the best here if you want to have a custom UX. I always found the slider a bit unwieldy with all It can do internally.

Best to treat it as a slider and nothing more imo.

I get your point. But somehow, I found it quite frustrating to have such a forced UI design decision hard coded within JUCE, where it could be easily customisable.


This would be gross but there is a hook to get the component.

Component* Slider::getCurrentPopupDisplay() const noexcept      { return pimpl->popupDisplay.get(); }

If you look at how it sets the drop shadow effect on the bubble component:

setComponentEffect (&shadow);

So you can likely get the current bubble component when it’s set visible and clear that effect.

something like:

slider-> getCurrentPopupDisplay->setComponentEffect(nullptr);