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:
parent
83e1348ebf
commit
5ca221ee11
2 changed files with 17 additions and 13 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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..
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue