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 <seekerslider.h>
|
||||
#include <nodeinstanceview.h>
|
||||
#include <import.h>
|
||||
|
||||
#include <coreplugin/actionmanager/actionmanager.h>
|
||||
#include <coreplugin/actionmanager/command.h>
|
||||
@@ -231,13 +232,20 @@ void Edit3DWidget::updateCreateSubMenu(const QStringList &keys,
|
||||
void Edit3DWidget::onCreateAction()
|
||||
{
|
||||
QAction *action = qobject_cast<QAction *>(sender());
|
||||
if (!action)
|
||||
if (!action || !m_view || !m_view->model())
|
||||
return;
|
||||
|
||||
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();
|
||||
QTC_ASSERT(modelNode.isValid(), return);
|
||||
m_view->setSelectedModelNode(modelNode);
|
||||
|
Reference in New Issue
Block a user