forked from qt-creator/qt-creator
QmlDesigner: Fix node creation via 3D view context menu
Relevant code was commented out in a previous 8.0->master merge as there were some conflicts caused by API changes in some components. Updated the code to use new APIs. Fixes: QDS-8045 Change-Id: I20f1dd700a2c1864151372624f4ceb1415b76f04 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
@@ -12,6 +12,8 @@
|
||||
#include "qmldesignerplugin.h"
|
||||
#include "qmlvisualnode.h"
|
||||
#include "viewmanager.h"
|
||||
|
||||
#include <auxiliarydataproperties.h>
|
||||
#include <designeractionmanager.h>
|
||||
#include <import.h>
|
||||
#include <nodeinstanceview.h>
|
||||
@@ -209,29 +211,33 @@ void Edit3DWidget::updateCreateSubMenu(const QStringList &keys,
|
||||
// Action triggered from the "create" sub-menu
|
||||
void Edit3DWidget::onCreateAction()
|
||||
{
|
||||
// QAction *action = qobject_cast<QAction *>(sender());
|
||||
// if (!action || !m_view || !m_view->model())
|
||||
// return;
|
||||
QAction *action = qobject_cast<QAction *>(sender());
|
||||
if (!action || !m_view || !m_view->model())
|
||||
return;
|
||||
|
||||
// m_view->executeInTransaction(__FUNCTION__, [&] {
|
||||
// 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}, {});
|
||||
m_view->executeInTransaction(__FUNCTION__, [&] {
|
||||
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, true, true))
|
||||
m_view->model()->changeImports({import}, {});
|
||||
|
||||
// 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);
|
||||
int activeScene = -1;
|
||||
auto data = m_view->rootModelNode().auxiliaryData(active3dSceneProperty);
|
||||
if (data)
|
||||
activeScene = data->toInt();
|
||||
auto modelNode = QmlVisualNode::createQml3DNode(m_view, entry,
|
||||
activeScene, m_contextMenuPos3d).modelNode();
|
||||
QTC_ASSERT(modelNode.isValid(), return);
|
||||
m_view->setSelectedModelNode(modelNode);
|
||||
|
||||
// if added node is a Model, assign it a material
|
||||
if (modelNode.metaInfo().isQtQuick3DModel())
|
||||
m_view->assignMaterialTo3dModel(modelNode);
|
||||
});
|
||||
|
||||
// // if added node is a Model, assign it a material
|
||||
// if (modelNode.isSubclassOf("QtQuick3D.Model"))
|
||||
// m_view->assignMaterialTo3dModel(modelNode);
|
||||
// });
|
||||
}
|
||||
|
||||
void Edit3DWidget::contextHelp(const Core::IContext::HelpCallback &callback) const
|
||||
|
Reference in New Issue
Block a user