Issue with TableListBox and accessibility

If I inherit from TableListBox and TableListBoxModel, there is some weird stuff going on. This is a regression and probably related to previous issue with ListBoxModel

I can fix the issue if I call setModel(nullptr) in my custom widget dtor.

Here is the stacktrace

#0	0x0000000105369010 in juce::ListBox::checkModelPtrIsValid() const at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_ListBox.cpp:63
#1	0x00000001053e6bfc in juce::ListBox::getModel() const at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_ListBox.h:222
#2	0x00000001053e9e70 in juce::ListBox::RowComponent::RowAccessibilityHandler::getCurrentState() const at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_ListBox.cpp:221
#3	0x00000001052f5b78 in juce::AccessibilityHandler::isIgnored() const at /Users/otristan/code/JUCE/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp:88
#4	0x00000001052f6040 in juce::getUnignoredAncestor(juce::AccessibilityHandler*) at /Users/otristan/code/JUCE/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp:161
#5	0x00000001052f5fb4 in juce::AccessibilityHandler::getParent() const at /Users/otristan/code/JUCE/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp:199
#6	0x00000001052f66c0 in juce::AccessibilityHandler::isParentOf(juce::AccessibilityHandler const*) const at /Users/otristan/code/JUCE/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp:243
#7	0x00000001052f5ad4 in juce::AccessibilityHandler::hasFocus(bool) const at /Users/otristan/code/JUCE/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp:274
#8	0x00000001052f57ac in juce::AccessibilityHandler::giveAwayFocus() const at /Users/otristan/code/JUCE/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp:285
#9	0x00000001052f56ec in juce::AccessibilityHandler::~AccessibilityHandler() at /Users/otristan/code/JUCE/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp:70
#10	0x00000001052f5880 in juce::AccessibilityHandler::~AccessibilityHandler() at /Users/otristan/code/JUCE/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp:69
#11	0x00000001052f58ac in juce::AccessibilityHandler::~AccessibilityHandler() at /Users/otristan/code/JUCE/modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp:69
#12	0x000000010545d69c in std::__1::default_delete<juce::AccessibilityHandler>::operator()(juce::AccessibilityHandler*) const at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/usr/include/c++/v1/__memory/unique_ptr.h:57
#13	0x000000010545d610 in std::__1::unique_ptr<juce::AccessibilityHandler, std::__1::default_delete<juce::AccessibilityHandler> >::reset(juce::AccessibilityHandler*) at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/usr/include/c++/v1/__memory/unique_ptr.h:318
#14	0x000000010545d5a0 in std::__1::unique_ptr<juce::AccessibilityHandler, std::__1::default_delete<juce::AccessibilityHandler> >::~unique_ptr() at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/usr/include/c++/v1/__memory/unique_ptr.h:272
#15	0x00000001052f7fa4 in std::__1::unique_ptr<juce::AccessibilityHandler, std::__1::default_delete<juce::AccessibilityHandler> >::~unique_ptr() at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/usr/include/c++/v1/__memory/unique_ptr.h:272
#16	0x00000001052f7728 in juce::Component::~Component() at /Users/otristan/code/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:545
#17	0x000000010545d0b4 in juce::TableHeaderComponent::ColumnInfo::~ColumnInfo() at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h:426
#18	0x000000010539d704 in juce::TableHeaderComponent::ColumnInfo::~ColumnInfo() at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h:426
#19	0x000000010539d730 in juce::TableHeaderComponent::ColumnInfo::~ColumnInfo() at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h:426
#20	0x00000001054cd8f8 in juce::ContainerDeletePolicy<juce::TableHeaderComponent::ColumnInfo>::destroy(juce::TableHeaderComponent::ColumnInfo*) at /Users/otristan/code/JUCE/modules/juce_core/memory/juce_ContainerDeletePolicy.h:54
#21	0x00000001054cd5f8 in juce::OwnedArray<juce::TableHeaderComponent::ColumnInfo, juce::DummyCriticalSection>::deleteAllObjects() at /Users/otristan/code/JUCE/modules/juce_core/containers/juce_OwnedArray.h:863
#22	0x00000001054cd53c in juce::OwnedArray<juce::TableHeaderComponent::ColumnInfo, juce::DummyCriticalSection>::~OwnedArray() at /Users/otristan/code/JUCE/modules/juce_core/containers/juce_OwnedArray.h:64
#23	0x0000000105371b2c in juce::OwnedArray<juce::TableHeaderComponent::ColumnInfo, juce::DummyCriticalSection>::~OwnedArray() at /Users/otristan/code/JUCE/modules/juce_core/containers/juce_OwnedArray.h:63
#24	0x0000000105371a94 in juce::TableHeaderComponent::~TableHeaderComponent() at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp:59
#25	0x00000001054cfafc in juce::TableListBox::Header::~Header() at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_TableListBox.cpp:371
#26	0x00000001054cf5cc in juce::TableListBox::Header::~Header() at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_TableListBox.cpp:371
#27	0x00000001054cf5f8 in juce::TableListBox::Header::~Header() at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_TableListBox.cpp:371
#28	0x00000001054a1f74 in std::__1::default_delete<juce::Component>::operator()(juce::Component*) const at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/usr/include/c++/v1/__memory/unique_ptr.h:57
#29	0x000000010532d320 in std::__1::unique_ptr<juce::Component, std::__1::default_delete<juce::Component> >::reset(juce::Component*) at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/usr/include/c++/v1/__memory/unique_ptr.h:318
#30	0x0000000105326bac in juce::ListBox::~ListBox() at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_ListBox.cpp:533
#31	0x0000000105375a04 in juce::TableListBox::~TableListBox() at /Users/otristan/code/JUCE/modules/juce_gui_basics/widgets/juce_TableListBox.cpp:417
#32	0x00000001063ddc0c in uvi::SearchPaths::~SearchPaths() at /Users/otristan/code/uvi4/src/Uvi/UI/SearchPaths.cpp:47

There were some changes to ListBox that could have caused you getting assertions such as the one inside juce::ListBox::checkModelPtrIsValid().

There’s a comment inside that function in the current develop version, which says that if you hit this assertion, you should e.g. Call ListBox::setModel (nullptr) before destroying your ListBoxModel.

So it sounds like you applied the right fix for your problem, and this is intended behaviour.