A re-init of the data nodes occurs often during a workflow. The mxn multi widget has some problems with that.
In a typical scenario the user opens a specific number of render windows, shows / hide certain data nodes of the storage to individually display different images. Maybe navigate individually in each render window (zoom, scroll).
If a reinit for all registered render windows is requested, this user defined preset will be reset to the node being reinitialized.
I propose to first gather different actions which lead to an update request.
Multi Widget (Editor)
changing the preferences page of the std- / mxn- multiwidgeteditorQmitkStdMultiWidgetEditor::OnPreferencesChanged: mitk::RenderingManager::GetInstance()->InitializeViewsByBoundingObjects(GetDataStorage());QmitkMxNMultiWidgetEditor::OnPreferencesChanged: mitk::RenderingManager::GetInstance()->InitializeViewsByBoundingObjects(GetDataStorage());
Segmentation Plugin
creating a new segmentation via the segmentation viewQmitkSegmentationView::CreateNewSegmentation: mitk::RenderingManager::GetInstance()->InitializeViews(referenceImage->GetTimeGeometry(), mitk::RenderingManager::REQUEST_UPDATE_ALL, true);--> was already done in D523
MultiLabel-Segmentation Plugin
updating the UI controls after a different reference (node) / segmentation (node) has been selected in the plugin's node selectorsupdating the UI controls after a layer has been deleted / changedQmitkMultiLabelSegmentationView::UpdateControls--> was already done in D523
re-initializing the views after a new label has been created or after a different segmentation (node) has been selected in the plugin's node selectorQmitkMultiLabelSegmentationView::ReinitializeViews()--> was already done in D523 (ReinitializeViews() was removed)
Autocrop action
performing the autocrop actionQmitkAutocropAction::Run: mitk::RenderingManager::GetInstance()->InitializeViews(node->GetData()->GetTimeGeometry(), RenderingManager::REQUEST_UPDATE_ALL, true ); and mitk::RenderingManager::GetInstance()->RequestUpdateAll();
--> two request for the same thing (InitializeViews already performs a RequestUpdateAll) --> has partially been fixed with D542
--> Autocrop action should change the camera view. This is a feature which is more important than keeping the last camera position.
Possible solutions
- allow locking specific render windows
- only initialize certain render windows (active / selected, related to used node, ...)