diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index d394cb3e81a..c95fd7a30bc 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -66,7 +66,7 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : m_itemIconSize(24, 24), m_resIconSize(24, 24), m_iconProvider(m_resIconSize), - m_itemsView(new QQuickView()), + m_itemViewQuickWidget(new QQuickWidget), m_resourcesView(new ItemLibraryTreeView(this)), m_filterFlag(QtBasic) { @@ -75,16 +75,16 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : setWindowTitle(tr("Library", "Title of library view")); /* create Items view and its model */ - m_itemsView->setResizeMode(QQuickView::SizeRootObjectToView); + m_itemViewQuickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); m_itemLibraryModel = new ItemLibraryModel(this); - QQmlContext *rootContext = m_itemsView->rootContext(); + QQmlContext *rootContext = m_itemViewQuickWidget->rootContext(); rootContext->setContextProperty(QStringLiteral("itemLibraryModel"), m_itemLibraryModel.data()); rootContext->setContextProperty(QStringLiteral("itemLibraryIconWidth"), m_itemIconSize.width()); rootContext->setContextProperty(QStringLiteral("itemLibraryIconHeight"), m_itemIconSize.height()); rootContext->setContextProperty(QStringLiteral("rootView"), this); - m_itemsView->rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor()); + m_itemViewQuickWidget->rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor()); /* create Resources view and its model */ m_resourcesFileSystemModel = new QFileSystemModel(this); @@ -93,7 +93,7 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : m_resourcesView->setIconSize(m_resIconSize); /* create image provider for loading item icons */ - m_itemsView->engine()->addImageProvider(QStringLiteral("qmldesigner_itemlibrary"), new Internal::ItemLibraryImageProvider); + m_itemViewQuickWidget->engine()->addImageProvider(QStringLiteral("qmldesigner_itemlibrary"), new Internal::ItemLibraryImageProvider); /* other widgets */ QTabBar *tabBar = new QTabBar(this); @@ -122,9 +122,9 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : lineEditLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 2); connect(m_filterLineEdit.data(), SIGNAL(filterChanged(QString)), this, SLOT(setSearchFilter(QString))); - QWidget *container = createWindowContainer(m_itemsView.data()); + m_stackedWidget = new QStackedWidget(this); - m_stackedWidget->addWidget(container); + m_stackedWidget->addWidget(m_itemViewQuickWidget.data()); m_stackedWidget->addWidget(m_resourcesView.data()); QWidget *spacer = new QWidget(this); @@ -228,7 +228,7 @@ void ItemLibraryWidget::setSearchFilter(const QString &searchFilter) { if (m_stackedWidget->currentIndex() == 0) { m_itemLibraryModel->setSearchText(searchFilter); - m_itemsView->update(); + m_itemViewQuickWidget->update(); } else { QStringList nameFilterList; if (searchFilter.contains('.')) { @@ -299,8 +299,8 @@ void ItemLibraryWidget::reloadQmlSource() { QString itemLibraryQmlFilePath = qmlSourcesPath() + QStringLiteral("/ItemsView.qml"); QTC_ASSERT(QFileInfo::exists(itemLibraryQmlFilePath), return); - m_itemsView->engine()->clearComponentCache(); - m_itemsView->setSource(QUrl::fromLocalFile(itemLibraryQmlFilePath)); + m_itemViewQuickWidget->engine()->clearComponentCache(); + m_itemViewQuickWidget->setSource(QUrl::fromLocalFile(itemLibraryQmlFilePath)); } void ItemLibraryWidget::setImportFilter(FilterChangeFlag flag) @@ -373,10 +373,11 @@ void ItemLibraryWidget::setResourcePath(const QString &resourcePath) updateSearch(); } -static void ungrabMouseOnQMLWorldWorkAround(QQuickView *quickView) +static void ungrabMouseOnQMLWorldWorkAround(QQuickWidget *quickWidget) { - if (quickView->mouseGrabberItem()) - quickView->mouseGrabberItem()->ungrabMouse(); + const QQuickWidgetPrivate *widgetPrivate = QQuickWidgetPrivate::get(quickWidget); + if (widgetPrivate && widgetPrivate->offscreenWindow && widgetPrivate->offscreenWindow->mouseGrabberItem()) + widgetPrivate->offscreenWindow->mouseGrabberItem()->ungrabMouse(); } void ItemLibraryWidget::startDragAndDrop(QVariant itemLibraryId) @@ -391,7 +392,7 @@ void ItemLibraryWidget::startDragAndDrop(QVariant itemLibraryId) drag->exec(); - ungrabMouseOnQMLWorldWorkAround(m_itemsView.data()); + ungrabMouseOnQMLWorldWorkAround(m_itemViewQuickWidget.data()); } void ItemLibraryWidget::removeImport(const QString &name) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h index 24a585378b3..4e96e8ff2aa 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h @@ -38,7 +38,7 @@ #include #include #include -#include +#include QT_BEGIN_NAMESPACE class QFileSystemModel; @@ -132,7 +132,7 @@ private: QPointer m_stackedWidget; QPointer m_filterLineEdit; - QScopedPointer m_itemsView; + QScopedPointer m_itemViewQuickWidget; QScopedPointer m_resourcesView; QShortcut *m_qmlSourceUpdateShortcut; diff --git a/src/plugins/qmldesigner/components/propertyeditor/quick2propertyeditorview.cpp b/src/plugins/qmldesigner/components/propertyeditor/quick2propertyeditorview.cpp index 2b1251bd723..1d28219b1a9 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/quick2propertyeditorview.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/quick2propertyeditorview.cpp @@ -34,70 +34,12 @@ #include "gradientmodel.h" #include "qmlanchorbindingproxy.h" -#include - namespace QmlDesigner { -void Quick2PropertyEditorView::execute() -{ - m_view.setSource(m_source); - if (!m_source.isEmpty()) - connect(&m_view, SIGNAL(statusChanged(QQuickView::Status)), this, SLOT(continueExecute())); -} - Quick2PropertyEditorView::Quick2PropertyEditorView(QWidget *parent) : - QWidget(parent) + QQuickWidget(parent) { - m_containerWidget = createWindowContainer(&m_view); - - QVBoxLayout *layout = new QVBoxLayout(this); - setLayout(layout); - layout->addWidget(m_containerWidget); - layout->setMargin(0); - m_view.setResizeMode(QQuickView::SizeRootObjectToView); -} - -QUrl Quick2PropertyEditorView::source() const -{ - return m_source; -} - -void Quick2PropertyEditorView::setSource(const QUrl& url) -{ - m_source = url; - execute(); -} - -QQmlEngine* Quick2PropertyEditorView::engine() -{ - return m_view.engine(); -} - -QQmlContext* Quick2PropertyEditorView::rootContext() -{ - return engine()->rootContext(); -} - -Quick2PropertyEditorView::Status Quick2PropertyEditorView::status() const -{ - return Quick2PropertyEditorView::Status(m_view.status()); -} - - -void Quick2PropertyEditorView::continueExecute() -{ - disconnect(&m_view, SIGNAL(statusChanged(QQuickView::Status)), this, SLOT(continueExecute())); - - if (!m_view.errors().isEmpty()) { - QList errorList = m_view.errors(); - foreach (const QQmlError &error, errorList) { - qWarning() << error; - } - emit statusChanged(status()); - return; - } - - emit statusChanged(status()); + setResizeMode(QQuickWidget::SizeRootObjectToView); } void Quick2PropertyEditorView::registerQmlTypes() diff --git a/src/plugins/qmldesigner/components/propertyeditor/quick2propertyeditorview.h b/src/plugins/qmldesigner/components/propertyeditor/quick2propertyeditorview.h index da99157725c..0bc541bbf4a 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/quick2propertyeditorview.h +++ b/src/plugins/qmldesigner/components/propertyeditor/quick2propertyeditorview.h @@ -30,54 +30,19 @@ #ifndef QUICK2PROERTYEDITORVIEW_H #define QUICK2PROERTYEDITORVIEW_H -#include -#include -#include -#include -#include -#include +#include -QT_BEGIN_NAMESPACE -class QQmlError; -class QQmlComponent; -QT_END_NAMESPACE namespace QmlDesigner { -class Quick2PropertyEditorView : public QWidget +class Quick2PropertyEditorView : public QQuickWidget { Q_OBJECT - Q_PROPERTY(QUrl source READ source WRITE setSource DESIGNABLE true) public: explicit Quick2PropertyEditorView(QWidget *parent = 0); - QUrl source() const; - void setSource(const QUrl&); - - QQmlEngine* engine(); - QQmlContext* rootContext(); - - enum Status { Null, Ready, Loading, Error }; - Status status() const; - static void registerQmlTypes(); - -signals: - void statusChanged(Quick2PropertyEditorView::Status); - -protected: - void execute(); - -private Q_SLOTS: - void continueExecute(); - -private: - QWidget *m_containerWidget; - QUrl m_source; - QQuickView m_view; - QPointer m_component; - }; } //QmlDesigner diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp index 9caa3b64540..0fc88003ef1 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp @@ -45,7 +45,6 @@ #include #include -#include #include #include #include @@ -58,15 +57,15 @@ namespace QmlDesigner { int StatesEditorWidget::currentStateInternalId() const { - Q_ASSERT(m_quickView->rootObject()); - Q_ASSERT(m_quickView->rootObject()->property("currentStateInternalId").isValid()); + Q_ASSERT(rootObject()); + Q_ASSERT(rootObject()->property("currentStateInternalId").isValid()); - return m_quickView->rootObject()->property("currentStateInternalId").toInt(); + return rootObject()->property("currentStateInternalId").toInt(); } void StatesEditorWidget::setCurrentStateInternalId(int internalId) { - m_quickView->rootObject()->setProperty("currentStateInternalId", internalId); + rootObject()->setProperty("currentStateInternalId", internalId); } void StatesEditorWidget::setNodeInstanceView(NodeInstanceView *nodeInstanceView) @@ -76,12 +75,11 @@ void StatesEditorWidget::setNodeInstanceView(NodeInstanceView *nodeInstanceView) void StatesEditorWidget::showAddNewStatesButton(bool showAddNewStatesButton) { - m_quickView->rootContext()->setContextProperty("canAddNewStates", showAddNewStatesButton); + rootContext()->setContextProperty("canAddNewStates", showAddNewStatesButton); } StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, StatesEditorModel *statesEditorModel) - : QWidget(), - m_quickView(new QQuickView()), + : QQuickWidget(), m_statesEditorView(statesEditorView), m_imageProvider(0), m_qmlSourceUpdateShortcut(0) @@ -89,25 +87,20 @@ StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, State m_imageProvider = new Internal::StatesEditorImageProvider; m_imageProvider->setNodeInstanceView(statesEditorView->nodeInstanceView()); - m_quickView->engine()->addImageProvider(QStringLiteral("qmldesigner_stateseditor"), m_imageProvider); - m_quickView->engine()->addImportPath(qmlSourcesPath()); + engine()->addImageProvider(QStringLiteral("qmldesigner_stateseditor"), m_imageProvider); + engine()->addImportPath(qmlSourcesPath()); m_qmlSourceUpdateShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_F4), this); connect(m_qmlSourceUpdateShortcut, SIGNAL(activated()), this, SLOT(reloadQmlSource())); - QVBoxLayout *layout = new QVBoxLayout(this); - layout->setMargin(0); - layout->setSpacing(0); - QWidget *container = createWindowContainer(m_quickView.data()); - layout->addWidget(container); - m_quickView->setResizeMode(QQuickView::SizeRootObjectToView); - container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + setResizeMode(QQuickWidget::SizeRootObjectToView); + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - m_quickView->rootContext()->setContextProperty(QStringLiteral("statesEditorModel"), statesEditorModel); - m_quickView->rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor()); + rootContext()->setContextProperty(QStringLiteral("statesEditorModel"), statesEditorModel); + rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor()); - m_quickView->rootContext()->setContextProperty("canAddNewStates", true); + rootContext()->setContextProperty("canAddNewStates", true); setWindowTitle(tr("States", "Title of Editor widget")); @@ -127,21 +120,21 @@ void StatesEditorWidget::reloadQmlSource() { QString statesListQmlFilePath = qmlSourcesPath() + QStringLiteral("/StatesList.qml"); QTC_ASSERT(QFileInfo::exists(statesListQmlFilePath), return); - m_quickView->engine()->clearComponentCache(); - m_quickView->setSource(QUrl::fromLocalFile(statesListQmlFilePath)); + engine()->clearComponentCache(); + setSource(QUrl::fromLocalFile(statesListQmlFilePath)); - QTC_ASSERT(m_quickView->rootObject(), return); - connect(m_quickView->rootObject(), SIGNAL(currentStateInternalIdChanged()), m_statesEditorView.data(), SLOT(synchonizeCurrentStateFromWidget())); - connect(m_quickView->rootObject(), SIGNAL(createNewState()), m_statesEditorView.data(), SLOT(createNewState())); - connect(m_quickView->rootObject(), SIGNAL(deleteState(int)), m_statesEditorView.data(), SLOT(removeState(int))); + QTC_ASSERT(rootObject(), return); + connect(rootObject(), SIGNAL(currentStateInternalIdChanged()), m_statesEditorView.data(), SLOT(synchonizeCurrentStateFromWidget())); + connect(rootObject(), SIGNAL(createNewState()), m_statesEditorView.data(), SLOT(createNewState())); + connect(rootObject(), SIGNAL(deleteState(int)), m_statesEditorView.data(), SLOT(removeState(int))); m_statesEditorView.data()->synchonizeCurrentStateFromWidget(); - setFixedHeight(m_quickView->initialSize().height()); + setFixedHeight(initialSize().height()); - connect(m_quickView->rootObject(), SIGNAL(expandedChanged()), this, SLOT(changeHeight())); + connect(rootObject(), SIGNAL(expandedChanged()), this, SLOT(changeHeight())); } void StatesEditorWidget::changeHeight() { - setFixedHeight(m_quickView->rootObject()->height()); + setFixedHeight(rootObject()->height()); } } diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h index 8a7967a7847..ea60fa016dc 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h @@ -30,11 +30,10 @@ #ifndef STATESEDITORWIDGET_H #define STATESEDITORWIDGET_H -#include +#include #include QT_BEGIN_NAMESPACE -class QQuickView; class QShortcut; QT_END_NAMESPACE @@ -48,7 +47,7 @@ class NodeInstanceView; namespace Internal { class StatesEditorImageProvider; } -class StatesEditorWidget : public QWidget +class StatesEditorWidget : public QQuickWidget { Q_OBJECT @@ -69,7 +68,6 @@ private slots: void changeHeight(); private: - QPointer m_quickView; QPointer m_statesEditorView; Internal::StatesEditorImageProvider *m_imageProvider; QShortcut *m_qmlSourceUpdateShortcut; diff --git a/src/plugins/qmldesigner/qmldesignerplugin.pro b/src/plugins/qmldesigner/qmldesignerplugin.pro index 190a8d65827..2ff32107e52 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.pro +++ b/src/plugins/qmldesigner/qmldesignerplugin.pro @@ -1,3 +1,4 @@ +QT += quickwidgets QT += widgets-private quick-private quickwidgets-private core-private gui-private #mouse ungrabbing workaround on quickitems CONFIG += exceptions