1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Made Viewport remove the old viewed component when setViewedComponent is called, even if it doesn't own it

This commit is contained in:
jules 2016-02-22 10:13:39 +00:00
parent 83e1348ebf
commit 5ca221ee11
2 changed files with 17 additions and 13 deletions

View file

@ -54,7 +54,7 @@ Viewport::Viewport (const String& name)
Viewport::~Viewport()
{
deleteContentComp();
deleteOrRemoveContentComp();
}
//==============================================================================
@ -62,20 +62,24 @@ void Viewport::visibleAreaChanged (const Rectangle<int>&) {}
void Viewport::viewedComponentChanged (Component*) {}
//==============================================================================
void Viewport::deleteContentComp()
void Viewport::deleteOrRemoveContentComp()
{
if (contentComp != nullptr)
{
contentComp->removeComponentListener (this);
if (deleteContent)
{
// This sets the content comp to a null pointer before deleting the old one, in case
// anything tries to use the old one while it's in mid-deletion..
ScopedPointer<Component> oldCompDeleter (contentComp);
}
else
{
contentComp = nullptr;
if (deleteContent)
{
// This sets the content comp to a null pointer before deleting the old one, in case
// anything tries to use the old one while it's in mid-deletion..
ScopedPointer<Component> oldCompDeleter (contentComp);
contentComp = nullptr;
}
else
{
contentHolder.removeChildComponent (contentComp);
contentComp = nullptr;
}
}
}
@ -83,7 +87,7 @@ void Viewport::setViewedComponent (Component* const newViewedComponent, const bo
{
if (contentComp.get() != newViewedComponent)
{
deleteContentComp();
deleteOrRemoveContentComp();
contentComp = newViewedComponent;
deleteContent = deleteComponentWhenNoLongerNeeded;

View file

@ -274,7 +274,7 @@ private:
Point<int> viewportPosToCompPos (Point<int>) const;
void updateVisibleArea();
void deleteContentComp();
void deleteOrRemoveContentComp();
#if JUCE_CATCH_DEPRECATED_CODE_MISUSE
// If you get an error here, it's because this method's parameters have changed! See the new definition above..