From 3ef45d0329858a60a8b96363fcf9d7fe9b6d8311 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Mon, 30 Jun 2014 12:13:16 +0200 Subject: Don't use the private QQmlMetaType::defaultProperty Duplicate the small implementation of that function, which uses QMetaObject public API together with the semi-public fact that the meta class info named DefaultProperty needs to be fetched. Change-Id: I37413bd28a0b0ead55853e4e3db5864dfc39966b Reviewed-by: Michael Bruning --- src/webengine/api/qquickwebengineview.cpp | 3 +-- src/webengine/ui_delegates_manager.cpp | 19 +++++++++++++++---- src/webengine/ui_delegates_manager.h | 1 + 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 3fbd53d34..cbd45842d 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -60,7 +60,6 @@ #include #include #include -#include #include 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 7790d2d55..5c0b0f65e 100644 --- a/src/webengine/ui_delegates_manager.cpp +++ b/src/webengine/ui_delegates_manager.cpp @@ -52,7 +52,6 @@ #include #include #include -#include // 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 125cacff4..6f8d8b097 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 -- cgit v1.2.3