summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2016-08-16 16:55:24 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2016-08-31 08:09:14 +0000
commit44f41d30ed3efce2f1970dcd158555b41b38014d (patch)
tree6fb144376b6488c55ff404f2df671666fc7d6afa /src
parent2209add7a5b019afef7830d8bbf416fbb2a2ecf5 (diff)
Qt Designer plugin: Add a dummy class for querying properties
Add a lightweight "fake" QWebEngineView class that is returned when Qt Designer queries the default property values by calling QDesignerCustomWidgetInterface::createWidget() with 0 parent, preventing crashes during QWebEngine initialization. Task-number: QTBUG-53984 Change-Id: Iced64b7d8af4c958fe7e29fa2f64bb9b681fbab2 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/qwebengineview/qwebengineview_plugin.cpp4
-rw-r--r--src/plugins/qwebengineview/qwebengineview_plugin.h34
2 files changed, 37 insertions, 1 deletions
diff --git a/src/plugins/qwebengineview/qwebengineview_plugin.cpp b/src/plugins/qwebengineview/qwebengineview_plugin.cpp
index 2d331571b..c885816c5 100644
--- a/src/plugins/qwebengineview/qwebengineview_plugin.cpp
+++ b/src/plugins/qwebengineview/qwebengineview_plugin.cpp
@@ -91,7 +91,9 @@ bool QWebEngineViewPlugin::isContainer() const
QWidget *QWebEngineViewPlugin::createWidget(QWidget *parent)
{
- return new QWebEngineView(parent);
+ if (parent)
+ return new QWebEngineView(parent);
+ return new fake::QWebEngineView;
}
bool QWebEngineViewPlugin::isInitialized() const
diff --git a/src/plugins/qwebengineview/qwebengineview_plugin.h b/src/plugins/qwebengineview/qwebengineview_plugin.h
index 8fa94625c..7c6f02e2a 100644
--- a/src/plugins/qwebengineview/qwebengineview_plugin.h
+++ b/src/plugins/qwebengineview/qwebengineview_plugin.h
@@ -38,9 +38,43 @@
#define QWEBENGINEVIEW_PLUGIN_H
#include <QtUiPlugin/QDesignerCustomWidgetInterface>
+#include <QtWidgets/QWidget>
+#include <QtGui/QIcon>
+#include <QtCore/QUrl>
QT_BEGIN_NAMESPACE
+namespace fake {
+// A lightweight "fake" QWebEngineView class that is returned when Qt Designer
+// queries the default property values by calling
+// QDesignerCustomWidgetInterface::createWidget() with 0 parent, preventing
+// crashes during QWebEngine initialization (QTBUG-53984).
+// The property list needs to be kept in sync with QWebEngineView.
+class QWebEngineView : public QWidget {
+ Q_OBJECT
+ Q_PROPERTY(QString title READ title)
+ Q_PROPERTY(QUrl url READ url WRITE setUrl) // Designable
+ Q_PROPERTY(QUrl iconUrl READ iconUrl)
+ Q_PROPERTY(QIcon icon READ icon)
+ Q_PROPERTY(QString selectedText READ selectedText)
+ Q_PROPERTY(bool hasSelection READ hasSelection)
+ Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor) // Designable
+
+public:
+ explicit QWebEngineView(QWidget *parent = Q_NULLPTR) : QWidget(parent) {}
+
+ QString title() const { return QString(); }
+ QUrl url() const { return QUrl(); }
+ void setUrl(const QUrl &) {}
+ QUrl iconUrl() const { return QUrl(); }
+ QIcon icon() const { return QIcon(); }
+ QString selectedText() { return QString(); }
+ bool hasSelection() { return false; }
+ qreal zoomFactor() const { return 1; }
+ void setZoomFactor(qreal) {}
+};
+} // namespace fake
+
class QWebEngineViewPlugin: public QObject, public QDesignerCustomWidgetInterface
{
Q_OBJECT