aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/PySide2
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-07-21 10:32:42 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-07-21 11:22:09 +0200
commitf2b61d1160e935083b14e7b26f4a21821d015e68 (patch)
treeb2bec583772236462839c9365aec479611136fcb /sources/pyside2/PySide2
parent14023079a9c082fa85592858698810e997af418e (diff)
Brush up the code related to custom widgets in the QUiLoader module
- Modernize, use override, nullptr - Fix include conventions - Remove *Private structs. They don't make sense in a static plugin. - Add some explanatory comments - Add missing initializations of members - Most importantly: add error handling to PyCustomWidget::createWidget(), which so far would swallow all errors encountered when executing the Widget's __init__ function. Change-Id: I100a4239013f959c8fb0b0adc0d3a99f73bd4bff Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside2/PySide2')
-rw-r--r--sources/pyside2/PySide2/QtUiTools/glue/plugins.h32
1 files changed, 17 insertions, 15 deletions
diff --git a/sources/pyside2/PySide2/QtUiTools/glue/plugins.h b/sources/pyside2/PySide2/QtUiTools/glue/plugins.h
index 9bfcec6ea..402965a81 100644
--- a/sources/pyside2/PySide2/QtUiTools/glue/plugins.h
+++ b/sources/pyside2/PySide2/QtUiTools/glue/plugins.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt for Python.
@@ -40,26 +40,28 @@
#ifndef _PLUGIN_H_
#define _PLUGIN_H_
-#include <QPluginLoader>
#include "customwidgets.h"
-inline void registerCustomWidget(PyObject *obj)
-{
- static PyCustomWidgets *plugin = nullptr;
+#include <QtCore/qpluginloader.h>
- if (plugin == 0) {
- const auto &instances = QPluginLoader::staticInstances();
- for (QObject *o : instances) {
- plugin = qobject_cast<PyCustomWidgets *>(o);
- if (plugin)
- break;
- }
+static inline PyCustomWidgets *findPlugin()
+{
+ const auto &instances = QPluginLoader::staticInstances();
+ for (QObject *o : instances) {
+ if (auto plugin = qobject_cast<PyCustomWidgets *>(o))
+ return plugin;
}
+ return nullptr;
+}
- if (!plugin)
- qDebug() << "Failed to load uiloader plugin.";
- else
+static void registerCustomWidget(PyObject *obj)
+{
+ static PyCustomWidgets *const plugin = findPlugin();
+
+ if (plugin)
plugin->registerWidgetType(obj);
+ else
+ qWarning("Qt for Python: Failed to find the static QUiLoader plugin.");
}
#endif