From f52d62034b605c29a3a82018f1c5680b21bc3fb3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 2 Jun 2019 14:27:12 +0200 Subject: [PATCH] [libcalamaresui] Manual QML loading trickery - The slideshow item needs a parent to be visible, - QML gets size 0,0 unless explicitly sized to the surrounding widget. --- src/libcalamaresui/ExecutionViewStep.cpp | 16 +++++++++++++--- src/libcalamaresui/ExecutionViewStep.h | 5 +++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/libcalamaresui/ExecutionViewStep.cpp b/src/libcalamaresui/ExecutionViewStep.cpp index f41068237..fd675313c 100644 --- a/src/libcalamaresui/ExecutionViewStep.cpp +++ b/src/libcalamaresui/ExecutionViewStep.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -150,9 +151,18 @@ ExecutionViewStep::onActivate() loadQml(); if ( m_qmlComponent ) { - m_qmlObject = m_qmlComponent->create(); - cDebug() << "Created QML object" << (void *)m_qmlObject << m_qmlObject->objectName(); - cDebug() << "Show root" << m_qmlShow->rootObject() << "context" << m_qmlShow->rootContext(); + auto* rootItem = m_qmlShow->quickWindow()->contentItem(); + rootItem->setSize( m_qmlShow->size() ); + + QObject* o = m_qmlComponent->create(); + m_qmlObject = qobject_cast< QQuickItem* >( o ); + if ( !m_qmlObject ) + delete o; + else + { + m_qmlObject->setParentItem( rootItem ); + m_qmlObject->setSize( m_qmlShow->size() ); + } } JobQueue* queue = JobQueue::instance(); diff --git a/src/libcalamaresui/ExecutionViewStep.h b/src/libcalamaresui/ExecutionViewStep.h index a968f22e4..c8a0a59d6 100644 --- a/src/libcalamaresui/ExecutionViewStep.h +++ b/src/libcalamaresui/ExecutionViewStep.h @@ -27,8 +27,9 @@ class QLabel; class QObject; class QProgressBar; -class QQuickWidget; class QQmlComponent; +class QQuickItem; +class QQuickWidget; namespace Calamares { @@ -65,7 +66,7 @@ private: QLabel* m_label; QQuickWidget* m_qmlShow; QQmlComponent* m_qmlComponent; - QObject* m_qmlObject; //< The actual show + QQuickItem* m_qmlObject; //< The actual show QStringList m_jobInstanceKeys;