forked from qt-creator/qt-creator
QmlDesigner: Add required import when creating nodes via 3D view
Creating nodes via 3D view context menu now adds required import if it is missing. Fixes: QDS-7950 Change-Id: Ibd4faff9d494a232e0fbf0fd5db3690449516bf6 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
@@ -36,6 +36,7 @@
|
|||||||
#include "viewmanager.h"
|
#include "viewmanager.h"
|
||||||
#include <seekerslider.h>
|
#include <seekerslider.h>
|
||||||
#include <nodeinstanceview.h>
|
#include <nodeinstanceview.h>
|
||||||
|
#include <import.h>
|
||||||
|
|
||||||
#include <coreplugin/actionmanager/actionmanager.h>
|
#include <coreplugin/actionmanager/actionmanager.h>
|
||||||
#include <coreplugin/actionmanager/command.h>
|
#include <coreplugin/actionmanager/command.h>
|
||||||
@@ -231,13 +232,20 @@ void Edit3DWidget::updateCreateSubMenu(const QStringList &keys,
|
|||||||
void Edit3DWidget::onCreateAction()
|
void Edit3DWidget::onCreateAction()
|
||||||
{
|
{
|
||||||
QAction *action = qobject_cast<QAction *>(sender());
|
QAction *action = qobject_cast<QAction *>(sender());
|
||||||
if (!action)
|
if (!action || !m_view || !m_view->model())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_view->executeInTransaction(__FUNCTION__, [&] {
|
m_view->executeInTransaction(__FUNCTION__, [&] {
|
||||||
int activeScene = m_view->rootModelNode().auxiliaryData("active3dScene@Internal").toInt();
|
ItemLibraryEntry entry = m_nameToEntry.value(action->data().toString());
|
||||||
|
Import import = Import::createLibraryImport(entry.requiredImport(),
|
||||||
|
QString::number(entry.majorVersion())
|
||||||
|
+ QLatin1Char('.')
|
||||||
|
+ QString::number(entry.minorVersion()));
|
||||||
|
if (!m_view->model()->hasImport(import))
|
||||||
|
m_view->model()->changeImports({import}, {});
|
||||||
|
|
||||||
auto modelNode = QmlVisualNode::createQml3DNode(m_view, m_nameToEntry.value(action->data().toString()),
|
int activeScene = m_view->rootModelNode().auxiliaryData("active3dScene@Internal").toInt();
|
||||||
|
auto modelNode = QmlVisualNode::createQml3DNode(m_view, entry,
|
||||||
activeScene, m_contextMenuPos3d).modelNode();
|
activeScene, m_contextMenuPos3d).modelNode();
|
||||||
QTC_ASSERT(modelNode.isValid(), return);
|
QTC_ASSERT(modelNode.isValid(), return);
|
||||||
m_view->setSelectedModelNode(modelNode);
|
m_view->setSelectedModelNode(modelNode);
|
||||||
|
Reference in New Issue
Block a user