mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Disconnect parent from all signals when detaching from parent
This commit is contained in:
parent
d3152f5030
commit
15ae290f1d
@ -66,9 +66,25 @@ void PdmObjectHandle::removeAsParentField( PdmFieldHandle* parentField )
|
||||
{
|
||||
CAF_ASSERT( m_parentField == parentField );
|
||||
|
||||
if ( parentField ) disconnectObserverFromAllSignals( parentField->ownerObject() );
|
||||
|
||||
m_parentField = nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmObjectHandle::disconnectObserverFromAllSignals( SignalObserver* observer )
|
||||
{
|
||||
if ( observer )
|
||||
{
|
||||
for ( auto emittedSignal : emittedSignals() )
|
||||
{
|
||||
emittedSignal->disconnect( observer );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -117,8 +117,10 @@ private:
|
||||
std::vector<std::pair<PdmObjectCapability*, bool>> m_capabilities;
|
||||
|
||||
// Child/Parent Relationships
|
||||
void setAsParentField( PdmFieldHandle* parentField );
|
||||
void removeAsParentField( PdmFieldHandle* parentField );
|
||||
void setAsParentField( PdmFieldHandle* parentField );
|
||||
void removeAsParentField( PdmFieldHandle* parentField );
|
||||
void disconnectObserverFromAllSignals( SignalObserver* observer );
|
||||
|
||||
PdmFieldHandle* m_parentField;
|
||||
|
||||
// PtrReferences
|
||||
|
@ -67,7 +67,7 @@ public:
|
||||
std::list<AbstractSignal*> emittedSignals() const;
|
||||
|
||||
private:
|
||||
std::list<AbstractSignal*> m_signals;
|
||||
mutable std::list<AbstractSignal*> m_signals;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
|
Loading…
Reference in New Issue
Block a user