From 2f359cbee14a069360b92edd8ec38a4808feb792 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 22 Feb 2019 13:26:33 +0100 Subject: [PATCH] correctly handle again NotImplementedError in Python view providers --- src/Gui/ViewProviderPythonFeature.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Gui/ViewProviderPythonFeature.cpp b/src/Gui/ViewProviderPythonFeature.cpp index 080a5fdccd..58891dd32a 100644 --- a/src/Gui/ViewProviderPythonFeature.cpp +++ b/src/Gui/ViewProviderPythonFeature.cpp @@ -453,6 +453,12 @@ ViewProviderPythonFeatureImp::setEdit(int ModNum) } } catch (Py::Exception&) { + // If an explicit NotImplementedError is raised then + // handle it differently to other RuntimeError + if (PyErr_ExceptionMatches(PyExc_NotImplementedError)) { + PyErr_Clear(); + return NotImplemented; + } // If a runtime error occurred when calling setEdit // then handle it like returning false if (PyErr_ExceptionMatches(PyExc_RuntimeError)) { @@ -503,6 +509,18 @@ ViewProviderPythonFeatureImp::unsetEdit(int ModNum) } } catch (Py::Exception&) { + // If an explicit NotImplementedError is raised then + // handle it differently to other RuntimeError + if (PyErr_ExceptionMatches(PyExc_NotImplementedError)) { + PyErr_Clear(); + return NotImplemented; + } + // If a runtime error occurred when calling setEdit + // then handle it like returning false + if (PyErr_ExceptionMatches(PyExc_RuntimeError)) { + PyErr_Clear(); + return Rejected; + } Base::PyException e; // extract the Python error text e.ReportException(); }