diff options
author | Martin Negyokru <negyokru@inf.u-szeged.hu> | 2024-01-31 15:31:23 +0100 |
---|---|---|
committer | Martin Negyokru <negyokru@inf.u-szeged.hu> | 2024-02-24 16:55:12 +0100 |
commit | 8ca73176d8cee5a67ae5fdd3fbf90aede3becc5b (patch) | |
tree | a9cc35f47fa62d9adaaa9eb0ebb18c3165c3a756 | |
parent | d192c2503d22c71742461a21392e5c110408ca88 (diff) |
Fix QWebEngineDesktopMediaRequest after API review update
- The request has to be copyable to make it compatible with qml
- Bring back EditRole
- Remove QWebEngineMediaSourceModelPrivate
Pick-to: 6.7
Change-Id: I28f64947eec8f041dab6feefa3d3ba85154975c8
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
-rw-r--r-- | src/core/api/qwebenginedesktopmediarequest.cpp | 52 | ||||
-rw-r--r-- | src/core/api/qwebenginedesktopmediarequest.h | 16 | ||||
-rw-r--r-- | src/core/api/qwebenginedesktopmediarequest_p.h | 3 | ||||
-rw-r--r-- | src/webenginequick/api/qquickwebengineview.cpp | 1 |
4 files changed, 42 insertions, 30 deletions
diff --git a/src/core/api/qwebenginedesktopmediarequest.cpp b/src/core/api/qwebenginedesktopmediarequest.cpp index 80e809230..dae69a68c 100644 --- a/src/core/api/qwebenginedesktopmediarequest.cpp +++ b/src/core/api/qwebenginedesktopmediarequest.cpp @@ -6,6 +6,9 @@ #include "qwebenginedesktopmediarequest_p.h" QT_BEGIN_NAMESPACE + +QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QWebEngineDesktopMediaRequestPrivate) + /*! \class QWebEngineDesktopMediaRequest \brief A request for populating a dialog with available sources for screen capturing. @@ -33,19 +36,6 @@ QT_BEGIN_NAMESPACE \sa QWebEnginePage::desktopMediaRequested(). */ -class QWebEngineMediaSourceModelPrivate -{ -public: - QWebEngineMediaSourceModelPrivate(QtWebEngineCore::DesktopMediaListQt *); - QtWebEngineCore::DesktopMediaListQt *m_mediaList; -}; - -QWebEngineMediaSourceModelPrivate::QWebEngineMediaSourceModelPrivate( - QtWebEngineCore::DesktopMediaListQt *mediaList) - : m_mediaList(mediaList) -{ -} - class QWebEngineMediaSourceModel : public QAbstractListModel { public: @@ -56,29 +46,29 @@ public: private: friend class QWebEngineDesktopMediaRequestPrivate; - explicit QWebEngineMediaSourceModel(QWebEngineMediaSourceModelPrivate *dd); - std::unique_ptr<QWebEngineMediaSourceModelPrivate> d; + explicit QWebEngineMediaSourceModel(QtWebEngineCore::DesktopMediaListQt *mediaList); + QtWebEngineCore::DesktopMediaListQt *m_mediaList; }; -QWebEngineMediaSourceModel::QWebEngineMediaSourceModel(QWebEngineMediaSourceModelPrivate *dd) - : d(dd) +QWebEngineMediaSourceModel::QWebEngineMediaSourceModel(QtWebEngineCore::DesktopMediaListQt *mediaList) + : m_mediaList(mediaList) { - QObject::connect(d->m_mediaList, &QtWebEngineCore::DesktopMediaListQt::sourceAdded, this, + QObject::connect(m_mediaList, &QtWebEngineCore::DesktopMediaListQt::sourceAdded, this, [this](int index) { beginInsertRows(QModelIndex(), index, index); endInsertRows(); }); - QObject::connect(d->m_mediaList, &QtWebEngineCore::DesktopMediaListQt::sourceRemoved, this, + QObject::connect(m_mediaList, &QtWebEngineCore::DesktopMediaListQt::sourceRemoved, this, [this](int index) { beginRemoveRows(QModelIndex(), index, index); endRemoveRows(); }); - QObject::connect(d->m_mediaList, &QtWebEngineCore::DesktopMediaListQt::sourceMoved, this, + QObject::connect(m_mediaList, &QtWebEngineCore::DesktopMediaListQt::sourceMoved, this, [this](int oldIndex, int newIndex) { beginMoveRows(QModelIndex(), oldIndex, oldIndex, QModelIndex(), newIndex); endMoveRows(); }); - QObject::connect(d->m_mediaList, &QtWebEngineCore::DesktopMediaListQt::sourceNameChanged, this, + QObject::connect(m_mediaList, &QtWebEngineCore::DesktopMediaListQt::sourceNameChanged, this, [this](int index) { Q_EMIT dataChanged(QModelIndex(), QModelIndex(), { Qt::DisplayRole }); @@ -89,7 +79,7 @@ QWebEngineMediaSourceModel::~QWebEngineMediaSourceModel() { } int QWebEngineMediaSourceModel::rowCount(const QModelIndex &) const { - return d->m_mediaList->getSourceCount(); + return m_mediaList->getSourceCount(); } QVariant QWebEngineMediaSourceModel::data(const QModelIndex &index, int role) const @@ -98,7 +88,8 @@ QVariant QWebEngineMediaSourceModel::data(const QModelIndex &index, int role) co return QVariant(); switch (role) { case Qt::DisplayRole: - return d->m_mediaList->getSourceName(index.row()); + case Qt::EditRole: + return m_mediaList->getSourceName(index.row()); default: break; } @@ -108,10 +99,8 @@ QVariant QWebEngineMediaSourceModel::data(const QModelIndex &index, int role) co QWebEngineDesktopMediaRequestPrivate::QWebEngineDesktopMediaRequestPrivate( QtWebEngineCore::DesktopMediaController *controller) : controller(controller) - , m_screensModel(new QWebEngineMediaSourceModel( - new QWebEngineMediaSourceModelPrivate(controller->screens()))) - , m_windowsModel(new QWebEngineMediaSourceModel( - new QWebEngineMediaSourceModelPrivate(controller->windows()))) + , m_screensModel(new QWebEngineMediaSourceModel(controller->screens())) + , m_windowsModel(new QWebEngineMediaSourceModel(controller->windows())) { } @@ -155,6 +144,15 @@ QWebEngineDesktopMediaRequest::QWebEngineDesktopMediaRequest( QWebEngineDesktopMediaRequest::~QWebEngineDesktopMediaRequest() = default; +QWebEngineDesktopMediaRequest::QWebEngineDesktopMediaRequest( + const QWebEngineDesktopMediaRequest &other) noexcept = default; + +QWebEngineDesktopMediaRequest &QWebEngineDesktopMediaRequest::operator=( + const QWebEngineDesktopMediaRequest &other) noexcept = default; + +QWebEngineDesktopMediaRequest::QWebEngineDesktopMediaRequest( + QWebEngineDesktopMediaRequest &&other) noexcept = default; + /*! Returns a QAbstractListModel for the available screens. diff --git a/src/core/api/qwebenginedesktopmediarequest.h b/src/core/api/qwebenginedesktopmediarequest.h index a68c517b7..ebf66bce4 100644 --- a/src/core/api/qwebenginedesktopmediarequest.h +++ b/src/core/api/qwebenginedesktopmediarequest.h @@ -5,6 +5,7 @@ #define QWEBENGINEDESKTOPMEDIAREQUEST_H #include <QtCore/qabstractitemmodel.h> +#include <QtCore/qshareddata.h> #include <QtCore/qobject.h> #include <QtWebEngineCore/qtwebenginecoreglobal.h> @@ -16,6 +17,8 @@ QT_BEGIN_NAMESPACE class QWebEnginePagePrivate; class QQuickWebEngineViewPrivate; class QWebEngineDesktopMediaRequestPrivate; +QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QWebEngineDesktopMediaRequestPrivate, + Q_WEBENGINECORE_EXPORT) class QWebEngineDesktopMediaRequest { @@ -26,6 +29,15 @@ class QWebEngineDesktopMediaRequest public: Q_WEBENGINECORE_EXPORT ~QWebEngineDesktopMediaRequest(); + Q_WEBENGINECORE_EXPORT + QWebEngineDesktopMediaRequest(const QWebEngineDesktopMediaRequest &other) noexcept; + Q_WEBENGINECORE_EXPORT + QWebEngineDesktopMediaRequest(QWebEngineDesktopMediaRequest &&other) noexcept; + Q_WEBENGINECORE_EXPORT + QWebEngineDesktopMediaRequest &operator=(const QWebEngineDesktopMediaRequest &other) noexcept; + QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QWebEngineDesktopMediaRequest) + void swap(QWebEngineDesktopMediaRequest &other) noexcept { d.swap(other.d); } + Q_WEBENGINECORE_EXPORT QAbstractListModel *screensModel() const; Q_WEBENGINECORE_EXPORT QAbstractListModel *windowsModel() const; @@ -36,11 +48,11 @@ public: private: friend class QWebEnginePagePrivate; friend class QQuickWebEngineViewPrivate; - Q_DISABLE_COPY(QWebEngineDesktopMediaRequest) Q_WEBENGINECORE_EXPORT explicit QWebEngineDesktopMediaRequest( QtWebEngineCore::DesktopMediaController *controller); - std::unique_ptr<QWebEngineDesktopMediaRequestPrivate> d; + QExplicitlySharedDataPointer<QWebEngineDesktopMediaRequestPrivate> d; }; +Q_DECLARE_SHARED(QWebEngineDesktopMediaRequest) QT_END_NAMESPACE diff --git a/src/core/api/qwebenginedesktopmediarequest_p.h b/src/core/api/qwebenginedesktopmediarequest_p.h index 8f74f5044..3add71bc0 100644 --- a/src/core/api/qwebenginedesktopmediarequest_p.h +++ b/src/core/api/qwebenginedesktopmediarequest_p.h @@ -16,6 +16,7 @@ #define QWEBENGINEDESKTOPMEDIAREQUEST_P_H #include <QtCore/qabstractitemmodel.h> +#include <QtCore/QSharedData> #include <QtCore/qobject.h> #include <QtWebEngineCore/qtwebenginecoreglobal.h> @@ -26,7 +27,7 @@ class DesktopMediaController; QT_BEGIN_NAMESPACE class QWebEngineMediaSourceModel; -class QWebEngineDesktopMediaRequestPrivate +class QWebEngineDesktopMediaRequestPrivate : public QSharedData { public: ~QWebEngineDesktopMediaRequestPrivate(); diff --git a/src/webenginequick/api/qquickwebengineview.cpp b/src/webenginequick/api/qquickwebengineview.cpp index c5c64c821..cedf45f46 100644 --- a/src/webenginequick/api/qquickwebengineview.cpp +++ b/src/webenginequick/api/qquickwebengineview.cpp @@ -42,6 +42,7 @@ #include <QtWebEngineCore/qwebenginescriptcollection.h> #include <QtWebEngineCore/qwebenginewebauthuxrequest.h> #include <QtWebEngineCore/private/qwebenginecontextmenurequest_p.h> +#include <QtWebEngineCore/private/qwebenginedesktopmediarequest_p.h> #include <QtWebEngineCore/private/qwebenginehistory_p.h> #include <QtWebEngineCore/private/qwebenginenewwindowrequest_p.h> #include <QtWebEngineCore/private/qwebenginescriptcollection_p.h> |