Hi Jules,
Good news - I’ve fixed it for you! The fix is here … as you can see, it is pretty trivial.
It’d be great if you could check this in to the main repo!
bool MultiDocumentPanel::closeDocument (Component* component,
const bool checkItsOkToCloseFirst)
{
if (components.contains (component))
{
if (checkItsOkToCloseFirst && ! tryToCloseDocument (component))
return false;
component->removeComponentListener (this);
const bool shouldDelete = MultiDocHelpers::shouldDeleteComp (component);
component->getProperties().remove ("mdiDocumentDelete_");
component->getProperties().remove ("mdiDocumentBkg_");
if (mode == FloatingWindows)
{
for (int i = getNumChildComponents(); --i >= 0;)
{
if (MultiDocumentPanelWindow* const dw = dynamic_cast <MultiDocumentPanelWindow*> (getChildComponent (i)))
{
if (dw->getContentComponent() == component)
{
ScopedPointer<MultiDocumentPanelWindow> (dw)->clearContentComponent();
break;
}
}
}
if (shouldDelete)
delete component;
components.removeFirstMatchingValue (component);
if (isFullscreenWhenOneDocument() && components.size() == 1)
{
for (int i = getNumChildComponents(); --i >= 0;)
{
ScopedPointer<MultiDocumentPanelWindow> dw (dynamic_cast <MultiDocumentPanelWindow*> (getChildComponent (i)));
if (dw != nullptr)
dw->clearContentComponent();
}
addAndMakeVisible (components.getFirst());
}
}
else
{
jassert (components.indexOf (component) >= 0);
if (tabComponent != nullptr)
{
for (int i = tabComponent->getNumTabs(); --i >= 0;)
if (tabComponent->getTabContentComponent (i) == component)
tabComponent->removeTab (i);
}
else
{
removeChildComponent (component);
}
if (shouldDelete)
delete component;
if (tabComponent != nullptr && tabComponent->getNumTabs() <= numDocsBeforeTabsUsed)
tabComponent = nullptr;
components.removeFirstMatchingValue (component);
if (components.size() > 0 && tabComponent == nullptr)
addAndMakeVisible (components.getFirst());
}
resized();
// MPC Close tab fix... (BEGIN)
// This ensures that the active tab is painted properly when a tab is closed!
Component *activeComponent = getActiveDocument();
if (activeComponent != nullptr) {
setActiveDocument(activeComponent);
}
// MPC Close tab fix... (END)
activeDocumentChanged();
}
else
{
jassertfalse;
}
return true;
}
Best wishes,
Pete