CAM: fix the transform tool

(cherry picked from commit f238a5f4e5)
This commit is contained in:
captain0xff
2026-02-23 15:30:05 +01:00
committed by Max Wilfinger
parent 61a11a5e41
commit ce8679df59
2 changed files with 18 additions and 4 deletions
@@ -489,7 +489,14 @@ void SoTransformDragger::setUpAutoScale(SoCamera* cameraIn)
cameraSensor.attach(&localCamera->height);
SoScale* localScaleNode = SO_GET_ANY_PART(this, "scaleNode", SoScale);
localScaleNode->scaleFactor.disconnect();
autoScaleResult.disconnect(&draggerSize);
// This check shouldn't be needed but since CAM has its own
// ViewProvider classes that implement setEdit but doesn't inherit from
// ViewProviderDragger, we need to call Std_TransformManip twice.
// This causes setEditViewer to be called twice and Coin throws an error
// for trying to disconnect twice.
if (autoScaleResult.isConnectedFromField()) {
autoScaleResult.disconnect(&draggerSize);
}
cameraCB(this, nullptr);
}
else if (cameraIn->getTypeId() == SoPerspectiveCamera::getClassTypeId()) {
@@ -498,7 +505,9 @@ void SoTransformDragger::setUpAutoScale(SoCamera* cameraIn)
cameraSensor.attach(&localCamera->position);
SoScale* localScaleNode = SO_GET_ANY_PART(this, "scaleNode", SoScale);
localScaleNode->scaleFactor.disconnect();
autoScaleResult.disconnect(&draggerSize);
if (autoScaleResult.isConnectedFromField()) {
autoScaleResult.disconnect(&draggerSize);
}
cameraCB(this, nullptr);
}
}
@@ -21,6 +21,7 @@
# ***************************************************************************
import FreeCAD
import FreeCADGui
import Path
import importlib
@@ -83,10 +84,14 @@ class ViewProvider(object):
def setEdit(self, vobj=None, mode=0):
if 0 == mode:
self._onEditCallback(True)
elif 1 == mode:
FreeCADGui.runCommand("Std_TransformManip")
return True
return False
def unsetEdit(self, arg1, arg2):
self._onEditCallback(False)
def unsetEdit(self, vobj, mode):
if 0 == mode:
self._onEditCallback(False)
def setupContextMenu(self, vobj, menu):
Path.Log.track()