Page MenuHomePhabricator

bugfix2817.patch

Authored By
baumhaue
Nov 7 2009, 6:44 PM
Size
6 KB
Referenced Files
None
Subscribers
None

bugfix2817.patch

Index: mitk/CoreUI/Qmitk/QmitkDataStorageComboBox.cpp
===================================================================
--- mitk/CoreUI/Qmitk/QmitkDataStorageComboBox.cpp (revision 19915)
+++ mitk/CoreUI/Qmitk/QmitkDataStorageComboBox.cpp (working copy)
@@ -29,6 +29,18 @@
QmitkDataStorageComboBox::~QmitkDataStorageComboBox()
{
+ // if there was an old storage, remove listeners
+ if(m_DataStorage.IsNotNull())
+ {
+ this->m_DataStorage->AddNodeEvent.RemoveListener( mitk::MessageDelegate1<QmitkDataStorageComboBox
+ , const mitk::DataTreeNode*>( this, &QmitkDataStorageComboBox::AddNode ) );
+
+ this->m_DataStorage->RemoveNodeEvent.RemoveListener( mitk::MessageDelegate1<QmitkDataStorageComboBox
+ , const mitk::DataTreeNode*>( this, &QmitkDataStorageComboBox::RemoveNode ) );
+ }
+
+ while(m_Nodes.size() > 0)
+ RemoveNode(0);
}
//#PUBLIC GETTER
Index: mitk/CoreUI/Qmitk/QmitkStdMultiWidget.cpp
===================================================================
--- mitk/CoreUI/Qmitk/QmitkStdMultiWidget.cpp (revision 19915)
+++ mitk/CoreUI/Qmitk/QmitkStdMultiWidget.cpp (working copy)
@@ -407,10 +407,13 @@
{
if (m_PlaneNode1.IsNotNull() && m_PlaneNode2.IsNotNull() && m_PlaneNode3.IsNotNull() && m_Node.IsNotNull())
{
- m_DataStorage->Remove(m_PlaneNode1);
- m_DataStorage->Remove(m_PlaneNode2);
- m_DataStorage->Remove(m_PlaneNode3);
- m_DataStorage->Remove(m_Node);
+ if(m_DataStorage.IsNotNull())
+ {
+ m_DataStorage->Remove(m_PlaneNode1);
+ m_DataStorage->Remove(m_PlaneNode2);
+ m_DataStorage->Remove(m_PlaneNode3);
+ m_DataStorage->Remove(m_Node);
+ }
}
}
Index: mitk/Modules/QmitkExt/QmitkSlicesInterpolator.cpp
===================================================================
--- mitk/Modules/QmitkExt/QmitkSlicesInterpolator.cpp (revision 19915)
+++ mitk/Modules/QmitkExt/QmitkSlicesInterpolator.cpp (working copy)
@@ -173,12 +173,14 @@
{
itk::MemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::MemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnTransversalTimeChanged );
+ slicer->RemoveObserver(TTimeObserverTag);
TTimeObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometryTimeEvent(NULL, 0), command );
}
{
itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnTransversalSliceChanged );
+ slicer->RemoveObserver(TSliceObserverTag);
TSliceObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometrySliceEvent(NULL, 0), command );
}
@@ -188,12 +190,14 @@
{
itk::MemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::MemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnSagittalTimeChanged );
+ slicer->RemoveObserver(STimeObserverTag);
STimeObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometryTimeEvent(NULL, 0), command );
}
{
itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnSagittalSliceChanged );
+ slicer->RemoveObserver(SSliceObserverTag);
SSliceObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometrySliceEvent(NULL, 0), command );
}
@@ -203,12 +207,14 @@
{
itk::MemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::MemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnFrontalTimeChanged );
+ slicer->RemoveObserver(FTimeObserverTag);
FTimeObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometryTimeEvent(NULL, 0), command );
}
{
itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnFrontalSliceChanged );
+ slicer->RemoveObserver(FSliceObserverTag);
FSliceObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometrySliceEvent(NULL, 0), command );
}
}
@@ -218,7 +224,29 @@
}
QmitkSlicesInterpolator::~QmitkSlicesInterpolator()
-{
+{
+ if (m_MultiWidget)
+ {
+ mitk::SliceNavigationController* slicer;
+ if(m_MultiWidget->mitkWidget1 != NULL)
+ {
+ slicer = m_MultiWidget->mitkWidget1->GetSliceNavigationController();
+ slicer->RemoveObserver( TSliceObserverTag );
+ slicer->RemoveObserver( TTimeObserverTag );
+ }
+ if(m_MultiWidget->mitkWidget2 != NULL)
+ {
+ slicer = m_MultiWidget->mitkWidget2->GetSliceNavigationController();
+ slicer->RemoveObserver( SSliceObserverTag );
+ slicer->RemoveObserver( STimeObserverTag );
+ }
+ if(m_MultiWidget->mitkWidget3 != NULL)
+ {
+ slicer = m_MultiWidget->mitkWidget3->GetSliceNavigationController();
+ slicer->RemoveObserver( FSliceObserverTag );
+ slicer->RemoveObserver( FTimeObserverTag );
+ }
+ }
}
void QmitkSlicesInterpolator::OnToolManagerWorkingDataModified()
@@ -314,7 +342,7 @@
const mitk::SliceNavigationController::GeometrySliceEvent& event = dynamic_cast<const mitk::SliceNavigationController::GeometrySliceEvent&>(e);
mitk::TimeSlicedGeometry* tsg = event.GetTimeSlicedGeometry();
- if (tsg)
+ if (tsg && m_TimeStep.size() > windowID)
{
mitk::SlicedGeometry3D* slicedGeometry = dynamic_cast<mitk::SlicedGeometry3D*>(tsg->GetGeometry3D(m_TimeStep[windowID]));
if (slicedGeometry)
@@ -322,7 +350,7 @@
mitk::PlaneGeometry* plane = dynamic_cast<mitk::PlaneGeometry*>(slicedGeometry->GetGeometry2D( event.GetPos() ));
Interpolate( plane, m_TimeStep[windowID] );
return true;
- }
+ }
}
}
catch(std::bad_cast)

File Metadata

Mime Type
text/plain
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
346
Default Alt Text
bugfix2817.patch (6 KB)

Event Timeline