From 868baa6dd27612b3a45141badcaa6b31436a111f Mon Sep 17 00:00:00 2001 From: markus Date: Tue, 2 Oct 2018 16:26:50 -0700 Subject: [PATCH] Return NotImplemented on PythonFeature::setEdit if the setEdit is implemented and returns True for one of the standard, not Default, edit modes --- src/Gui/ViewProviderPythonFeature.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Gui/ViewProviderPythonFeature.cpp b/src/Gui/ViewProviderPythonFeature.cpp index 0bfcfb7f05..52592bcae4 100644 --- a/src/Gui/ViewProviderPythonFeature.cpp +++ b/src/Gui/ViewProviderPythonFeature.cpp @@ -433,6 +433,15 @@ ViewProviderPythonFeatureImp::setEdit(int ModNum) args.setItem(0, Py::Int(ModNum)); Py::Boolean ok(method.apply(args)); bool value = (bool)ok; + if (value && + (ViewProvider::EditMode::Transform == ModNum || + ViewProvider::EditMode::Cutting == ModNum || + ViewProvider::EditMode::Color == ModNum)) { + // returning NotImplemented for the system edit modes if the receiver returns True + // so python features can implement their own edit dialog and yet still allow for + // the transformation tool / color assignment to work + return NotImplemented; + } return value ? Accepted : Rejected; } else { @@ -442,6 +451,15 @@ ViewProviderPythonFeatureImp::setEdit(int ModNum) args.setItem(1, Py::Int(ModNum)); Py::Boolean ok(method.apply(args)); bool value = (bool)ok; + if (value && + (ViewProvider::EditMode::Transform == ModNum || + ViewProvider::EditMode::Cutting == ModNum || + ViewProvider::EditMode::Color == ModNum)) { + // returning NotImplemented for the system edit modes if the receiver returns True + // so python features can implement their own edit dialog and yet still allow for + // the transformation tool / color assignment to work + return NotImplemented; + } return value ? Accepted : Rejected; } }