diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 3fbd53d343aab1ab3bf7b2bc39b88924be0a70dd..cbd45842df74b0ef15c47414e0d4b4f1134c98fa 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -60,7 +60,6 @@ #include <QScreen> #include <QStringBuilder> #include <QUrl> -#include <private/qqmlmetatype_p.h> #include <private/qquickaccessibleattached_p.h> QT_BEGIN_NAMESPACE @@ -184,7 +183,7 @@ bool QQuickWebEngineViewPrivate::contextMenuRequested(const WebEngineContextMenu ui()->addMenuSeparator(menu); if (QObject* menuExtras = contextMenuExtraItems->create(ui()->creationContextForComponent(contextMenuExtraItems))) { menuExtras->setParent(menu); - QQmlListReference entries(menu, QQmlMetaType::defaultProperty(menu).name(), qmlEngine(q)); + QQmlListReference entries(menu, defaultPropertyName(menu), qmlEngine(q)); if (entries.isValid()) entries.append(menuExtras); } diff --git a/src/webengine/ui_delegates_manager.cpp b/src/webengine/ui_delegates_manager.cpp index 7790d2d55ad0366219c8fef960a004d08ee66552..5c0b0f65e9bbbf4852ddf34e4db77221bef74001 100644 --- a/src/webengine/ui_delegates_manager.cpp +++ b/src/webengine/ui_delegates_manager.cpp @@ -52,7 +52,6 @@ #include <QQmlEngine> #include <QQmlProperty> #include <QStringBuilder> -#include <private/qqmlmetatype_p.h> // Uncomment for QML debugging //#define UI_DELEGATES_DEBUG @@ -94,6 +93,18 @@ static QString getUIDelegatesImportDir(QQmlEngine *engine) { return importDir; } +const char *defaultPropertyName(QObject *obj) +{ + const QMetaObject *metaObject = obj->metaObject(); + + int idx = metaObject->indexOfClassInfo("DefaultProperty"); + if (-1 == idx) + return 0; + + QMetaClassInfo info = metaObject->classInfo(idx); + return info.value(); +} + MenuItemHandler::MenuItemHandler(QObject *parent) : QObject(parent) { @@ -208,7 +219,7 @@ void UIDelegatesManager::addMenuItem(MenuItemHandler *menuItemHandler, const QSt QObject *menu = menuItemHandler->parent(); it->setParent(menu); - QQmlListReference entries(menu, QQmlMetaType::defaultProperty(menu).name(), qmlEngine(m_view)); + QQmlListReference entries(menu, defaultPropertyName(menu), qmlEngine(m_view)); if (entries.isValid()) entries.append(it); } @@ -222,7 +233,7 @@ void UIDelegatesManager::addMenuSeparator(QObject *menu) QObject *sep = menuSeparatorComponent->create(itemContext); sep->setParent(menu); - QQmlListReference entries(menu, QQmlMetaType::defaultProperty(menu).name(), qmlEngine(m_view)); + QQmlListReference entries(menu, defaultPropertyName(menu), qmlEngine(m_view)); if (entries.isValid()) entries.append(sep); } @@ -250,7 +261,7 @@ QObject *UIDelegatesManager::addMenu(QObject *parentMenu, const QString &title, } else { menu->setParent(parentMenu); - QQmlListReference entries(parentMenu, QQmlMetaType::defaultProperty(parentMenu).name(), qmlEngine(m_view)); + QQmlListReference entries(parentMenu, defaultPropertyName(parentMenu), qmlEngine(m_view)); if (entries.isValid()) entries.append(menu); } diff --git a/src/webengine/ui_delegates_manager.h b/src/webengine/ui_delegates_manager.h index 125cacff4133aa0ff4fb0f83181f08f267825215..6f8d8b097490a8d3dd4d2c0ce2c18d439d718f7f 100644 --- a/src/webengine/ui_delegates_manager.h +++ b/src/webengine/ui_delegates_manager.h @@ -75,6 +75,7 @@ class QQmlContext; class QQuickWebEngineView; QT_END_NAMESPACE +const char *defaultPropertyName(QObject *obj); class MenuItemHandler : public QObject { Q_OBJECT