summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Negyokru <negyokru@inf.u-szeged.hu>2024-01-31 15:31:23 +0100
committerMartin Negyokru <negyokru@inf.u-szeged.hu>2024-02-24 16:55:12 +0100
commit8ca73176d8cee5a67ae5fdd3fbf90aede3becc5b (patch)
treea9cc35f47fa62d9adaaa9eb0ebb18c3165c3a756
parentd192c2503d22c71742461a21392e5c110408ca88 (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.cpp52
-rw-r--r--src/core/api/qwebenginedesktopmediarequest.h16
-rw-r--r--src/core/api/qwebenginedesktopmediarequest_p.h3
-rw-r--r--src/webenginequick/api/qquickwebengineview.cpp1
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>