Gui: fix crash in ViewProviderLink::currentDraggingPlacement() if there is no active dragger

This commit is contained in:
wmayer
2022-07-19 10:40:32 +02:00
parent af18a97913
commit 3f8dc1a5a8

View File

@@ -2874,19 +2874,25 @@ void ViewProviderLink::unsetEditViewer(Gui::View3DInventorViewer* viewer)
Gui::Control().closeDialog();
}
Base::Placement ViewProviderLink::currentDraggingPlacement() const{
assert(pcDragger);
Base::Placement ViewProviderLink::currentDraggingPlacement() const
{
// if there isn't an active dragger return a default placement
if (!pcDragger)
return Base::Placement();
SbVec3f v;
SbRotation r;
if(useCenterballDragger) {
if (useCenterballDragger) {
SoCenterballDragger *dragger = static_cast<SoCenterballDragger*>(pcDragger.get());
v = dragger->center.getValue();
r = dragger->rotation.getValue();
}else{
}
else {
SoFCCSysDragger *dragger = static_cast<SoFCCSysDragger*>(pcDragger.get());
v = dragger->translation.getValue();
r = dragger->rotation.getValue();
}
float q1,q2,q3,q4;
r.getValue(q1,q2,q3,q4);
return Base::Placement(Base::Vector3d(v[0],v[1],v[2]),Base::Rotation(q1,q2,q3,q4));