From 03715005f8c359d9bc08adcb538d417d06b84fb9 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 8 May 2024 18:36:28 +0200 Subject: [PATCH] Gui: Fix PythonWrapper::toEnum() to also accept a Python int as argument See https://github.com/FreeCAD/FreeCAD/pull/13611#issuecomment-2097126565 --- src/Gui/PythonWrapper.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Gui/PythonWrapper.cpp b/src/Gui/PythonWrapper.cpp index 3e8610284a..40261e6cc2 100644 --- a/src/Gui/PythonWrapper.cpp +++ b/src/Gui/PythonWrapper.cpp @@ -586,6 +586,9 @@ QObject* PythonWrapper::toQObject(const Py::Object& pyobject) qsizetype PythonWrapper::toEnum(PyObject* pyPtr) { #if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) + if (PyLong_Check(pyPtr)) { + return PyLong_AsLong(pyPtr); + } return Shiboken::Enum::getValue(pyPtr); #else return toEnum(Py::Object(pyPtr)); @@ -598,17 +601,19 @@ qsizetype PythonWrapper::toEnum(const Py::Object& pyobject) return toEnum(pyobject.ptr()); #else try { - Py::Int ret; + qsizetype ret {}; if (pyobject.hasAttr(std::string("value"))) { ret = Py::Int(pyobject.getAttr(std::string("value"))); - } else { + } + else { ret = Py::Int(pyobject); } - return (qsizetype)ret; + return ret; } catch (Py::Exception&) { Base::PyException e; // extract the Python error text e.ReportException(); + return 0; } #endif }