Measure: Fix crash when removing referenced element

Also improve error messages
Fixes #16183
This commit is contained in:
hlorus
2024-09-02 11:20:21 +02:00
committed by WandererFan
parent ec3adf5fa0
commit 62a44a94f6
9 changed files with 27 additions and 36 deletions

View File

@@ -92,12 +92,6 @@ void MeasurePosition::parseSelection(const App::MeasureSelection& selection)
App::DocumentObjectExecReturn* MeasurePosition::execute()
{
recalculatePosition();
return DocumentObject::StdReturn;
}
void MeasurePosition::recalculatePosition()
{
const App::DocumentObject* object = Element.getValue();
const std::vector<std::string>& subElements = Element.getSubValues();
@@ -106,13 +100,15 @@ void MeasurePosition::recalculatePosition()
auto info = getMeasureInfo(subject);
if (!info || !info->valid) {
return;
return new App::DocumentObjectExecReturn("Cannot calculate position");
}
auto positionInfo = std::dynamic_pointer_cast<Part::MeasurePositionInfo>(info);
Position.setValue(positionInfo->position);
return DocumentObject::StdReturn;
}
void MeasurePosition::onChanged(const App::Property* prop)
{
if (isRestoring() || isRemoving()) {
@@ -120,7 +116,8 @@ void MeasurePosition::onChanged(const App::Property* prop)
}
if (prop == &Element) {
recalculatePosition();
auto ret = recompute();
delete ret;
}
DocumentObject::onChanged(prop);
}