Repainting invisible controls in Juce Audio Plugin


I think I may be missing something fundamental about how redraws are supposed to work in the JUCE Audio Plugin framework (1.16).

In DemoEditorComponent::updateParametersFromFilter() it repaints the entire window (with the comment that this is inefficient, which makes sense).

Obviously, I’d only wish to update those components whose contents were changed as a result of the parameter update, and the repaint routines within component setValue-type calls seem to be invoked only when the contents of components are changed (which again makes sense).

However, I have a slider component whose visibility is dependent on the value a parameter from my Editor::updateParametersFromFilter():

bool isDropEnabled = filter->getParameter(offsetBase + kModeOffset)==1.0f; speedKnob[i]->setVisible(isDropEnabled);
When this is set to invisible, I would expect the parent (in this case the editor window) to repaint the background area, but it doesn’t appear to do this.

This suggests that I have to keep track of whether this control has changed and repaint the background manually if the control has been made invisible - is this correct, or am I missing something glaringly obvious (quite possible, I’m sure)?




Ah yes, ahem, there was a small bugette with the setVisible call that crept into the last version, so it doesn’t always repaint. You’re quite right to be confused. It’ll be fixed in the next release (out within a couple of days probably), but you might want to send a repaint() in the meantime when you call setVisible()…