QWidget *StaticDialogMethodAttached::bestParentWindow() const { QObject *parent = d->dialogParent; if (!parent) parent = this->parent(); // if parent is a Declarative Object, search the proxied hierarchy AbstractDeclarativeObject *declarativeObject = dynamic_cast<AbstractDeclarativeObject*>(parent); if (declarativeObject) parent = declarativeObject->object(); while (parent) { QWidget *widget = qobject_cast<QWidget*>(parent); if (widget) return widget->topLevelWidget(); parent = parent->parent(); } return 0; }
void DeclarativeDeclarativeViewExtension::setDeclarativeRootContext(QObject *context) { DeclarativeContext *declarativeContext = dynamic_cast<DeclarativeContext*>(context); if (!declarativeContext) { AbstractDeclarativeObject *declarativeObject = dynamic_cast<AbstractDeclarativeObject*>(context); if (declarativeObject) declarativeContext = dynamic_cast<DeclarativeContext*>(declarativeObject->object()); } if (!declarativeContext) { qmlInfo(extendedDeclarativeView()) << "Cannot set object of type " << context->metaObject()->className() << " as root context"; return; } if (declarativeContext == m_rootContext.data()) return; // we can only set a different wrapper, not replace the view's root context Q_ASSERT(m_rootContext.isNull() || declarativeContext->context() == m_rootContext->context()); m_rootContext = QPointer<DeclarativeContext>(declarativeContext); emit declarativeRootContextChanged(); }