When removing a child component from its parent, the parent’s childrenChanged()
callback is not called if the child is not visible.
PIP to reproduce:
#pragma once
/* BEGIN_JUCE_PIP_METADATA
name: RemoveChildBug
dependencies: juce_core, juce_data_structures, juce_events, juce_graphics, juce_gui_basics
exporters: XCODE_MAC
moduleFlags: JUCE_STRICT_REFCOUNTEDPOINTER=1
type: Component
mainClass: MainComponent
END_JUCE_PIP_METADATA */
class MainComponent : public juce::Component
{
public:
MainComponent()
{
addChildComponent (button);
DBG ("Constructor: " + juce::String {getNumChildComponents()});
removeChildComponent (&button);
DBG ("Constructor: " + juce::String {getNumChildComponents()});
setSize (600, 400);
}
void childrenChanged() override
{
DBG ("childrenChanged(): " + juce::String {getNumChildComponents()});
}
private:
juce::TextButton button;
};
Expected Output:
childrenChanged(): 1
Constructor: 1
childrenChanged(): 0
Constructor: 0
Actual Output:
childrenChanged(): 1
Constructor: 1
Constructor: 0