I recently updated to JUCE v 4.0.2 and the default look and feel of my plugin changed to the new LookAndFeel_V3. I'm trying to go back to LookAndFeel_V2, but it is more difficult than I thought.
The JUCE demo uses a OwnedArray of dynamically instantiated LookAndFeels. I only need one, so I used a scoped pointer instead, but otherwise I basically copied the code from the demo.
This is in my editor header:
ScopedPointer<LookAndFeel> mLookAndFeel; // using ScopedPointer<LookAndFeel_V2> gives the same results
and this is in my editor constructor:
mLookAndFeel = new LookAndFeel_V2();
for (int i = 0; i < getNumChildComponents(); ++i){
if (Component* c = getChildComponent(i)){
c->setLookAndFeel (mLookAndFeel);
}
}
The plugin opens fine (with LookAndFeel_V2), but on exiting the DAW, I'm getting a crash at the last line of this snippet from juce_TabbedButtonBar.cpp:
void TabbedButtonBar::updateTabPositions (bool animate)
{
LookAndFeel& lf = getLookAndFeel();
int depth = getWidth();
int length = getHeight();
if (! isVertical())
std::swap (depth, length);
const int overlap = lf.getTabButtonOverlap (depth) + lf.getTabButtonSpaceAroundImage() * 2;
...
The error is:
libc++abi.dylib: Pure virtual function called!
Any ideas?
Vincent
