Mercurial > hg > orthanc-stone
diff Framework/Radiography/RadiographyWidget.cpp @ 1138:1a73f852810a broker
integration mainline->broker
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 07 Nov 2019 07:28:39 +0100 |
parents | 383aa2a7d426 4663f158c748 |
children | 8d2f1b25593c |
line wrap: on
line diff
--- a/Framework/Radiography/RadiographyWidget.cpp Wed Nov 06 20:27:20 2019 +0100 +++ b/Framework/Radiography/RadiographyWidget.cpp Thu Nov 07 07:28:39 2019 +0100 @@ -199,6 +199,11 @@ selectedLayer_ = layer; } + void RadiographyWidget::ClearSelectedLayer() + { + hasSelection_ = false; + } + bool RadiographyWidget::SelectMaskLayer(size_t index) { std::vector<size_t> layerIndexes; @@ -249,6 +254,14 @@ NotifyContentChanged(); } + void RadiographyWidget::OnLayerRemoved(const RadiographyScene::LayerRemovedMessage& message) + { + size_t removedLayerIndex = message.GetLayerIndex(); + if (hasSelection_ && selectedLayer_ == removedLayerIndex) + { + ClearSelectedLayer(); + } + } void RadiographyWidget::SetInvert(bool invert) { @@ -260,7 +273,7 @@ } - void RadiographyWidget::SwitchInvert() + void RadiographyWidget::SwitchInvert() { invert_ = !invert_; NotifyContentChanged(); @@ -283,6 +296,10 @@ Register<RadiographyScene::GeometryChangedMessage>(*scene_, &RadiographyWidget::OnGeometryChanged); Register<RadiographyScene::ContentChangedMessage>(*scene_, &RadiographyWidget::OnContentChanged); + scene_->RegisterObserverCallback( + new Callable<RadiographyWidget, RadiographyScene::LayerRemovedMessage> + (*this, &RadiographyWidget::OnLayerRemoved)); + NotifyContentChanged(); // force redraw