From e305f079d0cfe83d388c5f62ca4dcc7c6777099f Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 12 Dec 2015 20:14:37 +0100 Subject: [PATCH] + when using FreeCAD GUI as Python module handle attempt to re-create main window --- src/Main/FreeCADGuiPy.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Main/FreeCADGuiPy.cpp b/src/Main/FreeCADGuiPy.cpp index 2e28d8779..6cd5d0cf5 100644 --- a/src/Main/FreeCADGuiPy.cpp +++ b/src/Main/FreeCADGuiPy.cpp @@ -120,8 +120,10 @@ FreeCADGui_showMainWindow(PyObject * /*self*/, PyObject *args) } if (!thr) { - if (!setupMainWindow()) + if (!setupMainWindow()) { + PyErr_SetString(PyExc_RuntimeError, "Cannot create main window\n"); return NULL; + } } Py_INCREF(Py_None); @@ -248,9 +250,18 @@ QWidget* setupMainWindow() } if (!Gui::MainWindow::getInstance()) { + static bool hasMainWindow = false; + if (hasMainWindow) { + // if a main window existed and has been deleted it's not supported + // to re-create it + return 0; + } + Base::PyGILStateLocker lock; PyObject* input = PySys_GetObject("stdin"); Gui::MainWindow *mw = new Gui::MainWindow(); + hasMainWindow = true; + QIcon icon = qApp->windowIcon(); if (icon.isNull()) qApp->setWindowIcon(Gui::BitmapFactory().pixmap(App::Application::Config()["AppIcon"].c_str()));