Mercurial > hg > orthanc-stone
diff Framework/Radiography/RadiographyWidget.cpp @ 1131:4663f158c748
RadiographyWidget is now notified when a layer is removed from the scene
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Wed, 06 Nov 2019 10:46:46 +0100 |
parents | d33ae2b0db9d |
children | 1a73f852810a a5f2a6b04a31 |
line wrap: on
line diff
--- a/Framework/Radiography/RadiographyWidget.cpp Mon Nov 04 22:16:33 2019 +0100 +++ b/Framework/Radiography/RadiographyWidget.cpp Wed Nov 06 10:46:46 2019 +0100 @@ -201,6 +201,11 @@ selectedLayer_ = layer; } + void RadiographyWidget::ClearSelectedLayer() + { + hasSelection_ = false; + } + bool RadiographyWidget::SelectMaskLayer(size_t index) { std::vector<size_t> layerIndexes; @@ -251,6 +256,14 @@ NotifyContentChanged(); } + void RadiographyWidget::OnLayerRemoved(const RadiographyScene::LayerRemovedMessage& message) + { + size_t removedLayerIndex = message.GetLayerIndex(); + if (hasSelection_ && selectedLayer_ == removedLayerIndex) + { + ClearSelectedLayer(); + } + } void RadiographyWidget::SetInvert(bool invert) { @@ -262,7 +275,7 @@ } - void RadiographyWidget::SwitchInvert() + void RadiographyWidget::SwitchInvert() { invert_ = !invert_; NotifyContentChanged(); @@ -295,6 +308,10 @@ new Callable<RadiographyWidget, RadiographyScene::ContentChangedMessage> (*this, &RadiographyWidget::OnContentChanged)); + scene_->RegisterObserverCallback( + new Callable<RadiographyWidget, RadiographyScene::LayerRemovedMessage> + (*this, &RadiographyWidget::OnLayerRemoved)); + NotifyContentChanged(); // force redraw