From ae890def175bfc0f002cc0fcc3aa1bd1fbf2c854 Mon Sep 17 00:00:00 2001 From: Michal Klocek Date: Fri, 20 Aug 2021 10:35:52 +0200 Subject: Add desginer plugin to cmake build Fixes: QTBUG-95668 Change-Id: If3613043bfad00871b847c57a3e0961a67cec89b Reviewed-by: Allan Sandfeld Jensen (cherry picked from commit a211a19950112a942275108f148aa46be061438a) Reviewed-by: Qt Cherry-pick Bot --- CMakeLists.txt | 2 +- .../qwebengineview/images/qwebengineview.png | Bin 1473 -> 0 bytes .../qwebengineview/qwebengineview_plugin.cpp | 137 --------------------- src/plugins/qwebengineview/qwebengineview_plugin.h | 107 ---------------- src/webenginewidgets/CMakeLists.txt | 6 +- .../plugins/qwebengineview/CMakeLists.txt | 22 ++++ .../qwebengineview/images/qwebengineview.png | Bin 0 -> 1473 bytes .../qwebengineview/qwebengineview_plugin.cpp | 137 +++++++++++++++++++++ .../plugins/qwebengineview/qwebengineview_plugin.h | 107 ++++++++++++++++ 9 files changed, 272 insertions(+), 246 deletions(-) delete mode 100644 src/plugins/qwebengineview/images/qwebengineview.png delete mode 100644 src/plugins/qwebengineview/qwebengineview_plugin.cpp delete mode 100644 src/plugins/qwebengineview/qwebengineview_plugin.h create mode 100644 src/webenginewidgets/plugins/qwebengineview/CMakeLists.txt create mode 100644 src/webenginewidgets/plugins/qwebengineview/images/qwebengineview.png create mode 100644 src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp create mode 100644 src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h diff --git a/CMakeLists.txt b/CMakeLists.txt index f96172a40..e99ebcc61 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ set(QT_USE_FIXED_QT_ADD_RESOURCE_BASE TRUE) find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core) find_package(Qt6 ${PROJECT_VERSION} CONFIG QUIET OPTIONAL_COMPONENTS Gui Widgets Network OpenGL OpenGLWidgets Quick Qml PrintSupport - WebChannel Positioning QuickControls2 Test QuickWidgets QuickTest WebSockets + WebChannel Positioning QuickControls2 Test QuickWidgets QuickTest WebSockets Designer ) set(WEBENGINE_MODULE_BUILD TRUE) qt_build_repo() diff --git a/src/plugins/qwebengineview/images/qwebengineview.png b/src/plugins/qwebengineview/images/qwebengineview.png deleted file mode 100644 index 01a0920c9..000000000 Binary files a/src/plugins/qwebengineview/images/qwebengineview.png and /dev/null differ diff --git a/src/plugins/qwebengineview/qwebengineview_plugin.cpp b/src/plugins/qwebengineview/qwebengineview_plugin.cpp deleted file mode 100644 index dff041800..000000000 --- a/src/plugins/qwebengineview/qwebengineview_plugin.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWebEngine module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwebengineview_plugin.h" - -#include -#include - -#include -#include - -QT_BEGIN_NAMESPACE - -static const char toolTipC[] = - QT_TRANSLATE_NOOP(QWebEngineViewPlugin, - "A widget for displaying a web page, from the Qt WebEngineWidgets module"); - -QWebEngineViewPlugin::QWebEngineViewPlugin(QObject *parent) : - QObject(parent), - m_initialized(false) -{ -} - -QString QWebEngineViewPlugin::name() const -{ - return QStringLiteral("QWebEngineView"); -} - -QString QWebEngineViewPlugin::group() const -{ - return QStringLiteral("Display Widgets"); -} - -QString QWebEngineViewPlugin::toolTip() const -{ - return tr(toolTipC); -} - -QString QWebEngineViewPlugin::whatsThis() const -{ - return tr(toolTipC); -} - -QString QWebEngineViewPlugin::includeFile() const -{ - return QStringLiteral(""); -} - -QIcon QWebEngineViewPlugin::icon() const -{ - return QIcon(QStringLiteral(":/qt-project.org/qwebengineview/images/qwebengineview.png")); -} - -bool QWebEngineViewPlugin::isContainer() const -{ - return false; -} - -QWidget *QWebEngineViewPlugin::createWidget(QWidget *parent) -{ - if (parent) - return new QWebEngineView(parent); - return new fake::QWebEngineView; -} - -bool QWebEngineViewPlugin::isInitialized() const -{ - return m_initialized; -} - -void QWebEngineViewPlugin::initialize(QDesignerFormEditorInterface * /*core*/) -{ - if (m_initialized) - return; - - m_initialized = true; -} - -QString QWebEngineViewPlugin::domXml() const -{ - return QStringLiteral("\ - \ - \ - \ - \ - about:blank\ - \ - \ - \ - \ - 0\ - 0\ - 300\ - 200\ - \ - \ - \ - "); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qwebengineview/qwebengineview_plugin.h b/src/plugins/qwebengineview/qwebengineview_plugin.h deleted file mode 100644 index 8c0960adc..000000000 --- a/src/plugins/qwebengineview/qwebengineview_plugin.h +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWebEngine module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWEBENGINEVIEW_PLUGIN_H -#define QWEBENGINEVIEW_PLUGIN_H - -#include -#include -#include -#include - -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 = 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 - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") - Q_INTERFACES(QDesignerCustomWidgetInterface) -public: - explicit QWebEngineViewPlugin(QObject *parent = nullptr); - - QString name() const override; - QString group() const override; - QString toolTip() const override; - QString whatsThis() const override; - QString includeFile() const override; - QIcon icon() const override; - bool isContainer() const override; - QWidget *createWidget(QWidget *parent) override; - bool isInitialized() const override; - void initialize(QDesignerFormEditorInterface *core) override; - QString domXml() const override; - -private: - bool m_initialized; -}; - -QT_END_NAMESPACE - -#endif // QWEBENGINEVIEW_PLUGIN_H diff --git a/src/webenginewidgets/CMakeLists.txt b/src/webenginewidgets/CMakeLists.txt index 6dedf2187..6a25e7297 100644 --- a/src/webenginewidgets/CMakeLists.txt +++ b/src/webenginewidgets/CMakeLists.txt @@ -1,4 +1,8 @@ - +if(TARGET Qt::Designer) + add_subdirectory(plugins/qwebengineview) +else() + message(WARNING "Qt tools Designer is required to compile designer plugin") +endif() qt_internal_add_module(WebEngineWidgets SOURCES api/qtwebenginewidgetsglobal.h diff --git a/src/webenginewidgets/plugins/qwebengineview/CMakeLists.txt b/src/webenginewidgets/plugins/qwebengineview/CMakeLists.txt new file mode 100644 index 000000000..3e6f324da --- /dev/null +++ b/src/webenginewidgets/plugins/qwebengineview/CMakeLists.txt @@ -0,0 +1,22 @@ +qt_internal_add_plugin(QWebEngineViewPlugin + OUTPUT_NAME qwebengineview + PLUGIN_TYPE designer + SOURCES + qwebengineview_plugin.cpp qwebengineview_plugin.h + LIBRARIES + Qt::Core + Qt::Designer + Qt::Gui + Qt::WebEngineWidgets +) + +set(qwebengineview_plugin_resource_files + "images/qwebengineview.png" +) + +qt_internal_add_resource(QWebEngineViewPlugin "qwebengineview_plugin" + PREFIX + "/qt-project.org/qwebengineview" + FILES + ${qwebengineview_plugin_resource_files} +) diff --git a/src/webenginewidgets/plugins/qwebengineview/images/qwebengineview.png b/src/webenginewidgets/plugins/qwebengineview/images/qwebengineview.png new file mode 100644 index 000000000..01a0920c9 Binary files /dev/null and b/src/webenginewidgets/plugins/qwebengineview/images/qwebengineview.png differ diff --git a/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp new file mode 100644 index 000000000..dff041800 --- /dev/null +++ b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp @@ -0,0 +1,137 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qwebengineview_plugin.h" + +#include +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +static const char toolTipC[] = + QT_TRANSLATE_NOOP(QWebEngineViewPlugin, + "A widget for displaying a web page, from the Qt WebEngineWidgets module"); + +QWebEngineViewPlugin::QWebEngineViewPlugin(QObject *parent) : + QObject(parent), + m_initialized(false) +{ +} + +QString QWebEngineViewPlugin::name() const +{ + return QStringLiteral("QWebEngineView"); +} + +QString QWebEngineViewPlugin::group() const +{ + return QStringLiteral("Display Widgets"); +} + +QString QWebEngineViewPlugin::toolTip() const +{ + return tr(toolTipC); +} + +QString QWebEngineViewPlugin::whatsThis() const +{ + return tr(toolTipC); +} + +QString QWebEngineViewPlugin::includeFile() const +{ + return QStringLiteral(""); +} + +QIcon QWebEngineViewPlugin::icon() const +{ + return QIcon(QStringLiteral(":/qt-project.org/qwebengineview/images/qwebengineview.png")); +} + +bool QWebEngineViewPlugin::isContainer() const +{ + return false; +} + +QWidget *QWebEngineViewPlugin::createWidget(QWidget *parent) +{ + if (parent) + return new QWebEngineView(parent); + return new fake::QWebEngineView; +} + +bool QWebEngineViewPlugin::isInitialized() const +{ + return m_initialized; +} + +void QWebEngineViewPlugin::initialize(QDesignerFormEditorInterface * /*core*/) +{ + if (m_initialized) + return; + + m_initialized = true; +} + +QString QWebEngineViewPlugin::domXml() const +{ + return QStringLiteral("\ + \ + \ + \ + \ + about:blank\ + \ + \ + \ + \ + 0\ + 0\ + 300\ + 200\ + \ + \ + \ + "); +} + +QT_END_NAMESPACE diff --git a/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h new file mode 100644 index 000000000..8c0960adc --- /dev/null +++ b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWEBENGINEVIEW_PLUGIN_H +#define QWEBENGINEVIEW_PLUGIN_H + +#include +#include +#include +#include + +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 = 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 + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") + Q_INTERFACES(QDesignerCustomWidgetInterface) +public: + explicit QWebEngineViewPlugin(QObject *parent = nullptr); + + QString name() const override; + QString group() const override; + QString toolTip() const override; + QString whatsThis() const override; + QString includeFile() const override; + QIcon icon() const override; + bool isContainer() const override; + QWidget *createWidget(QWidget *parent) override; + bool isInitialized() const override; + void initialize(QDesignerFormEditorInterface *core) override; + QString domXml() const override; + +private: + bool m_initialized; +}; + +QT_END_NAMESPACE + +#endif // QWEBENGINEVIEW_PLUGIN_H -- cgit v1.2.3