Merge remote-tracking branch 'origin/8.0'

Conflicts:
	src/libs/qmljs/qmljsmodelmanagerinterface.cpp
	src/plugins/clangcodemodel/clangdclient.cpp
	src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp
	src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
	src/plugins/qmldesigner/designercore/include/modelnode.h
	src/plugins/qmldesigner/designercore/model/modelnode.cpp
	src/plugins/qmldesigner/designercore/model/rewriterview.cpp

Change-Id: I93c57879b79f27325321bfc045ca618bd835af93
This commit is contained in:
Eike Ziller
2022-08-26 08:40:23 +02:00
57 changed files with 379 additions and 219 deletions

View File

@@ -235,14 +235,29 @@ void Edit3DView::customNotification([[maybe_unused]] const AbstractView *view,
resetPuppet();
}
/**
* @brief get model at position from puppet process
*
* Response from puppet process for the model at requested position
*
* @param modelNode 3D model picked at the requested position, invalid node if no model exists
*/
void Edit3DView::modelAtPosReady(const ModelNode &modelNode)
{
if (!m_droppedMaterial.isValid() || !modelNode.isValid())
return;
executeInTransaction(__FUNCTION__, [&] {
assignMaterialTo3dModel(modelNode, m_droppedMaterial);
});
if (m_modelAtPosReqType == ModelAtPosReqType::ContextMenu) {
// Make sure right-clicked item is selected. Due to a bug in puppet side right-clicking an item
// while the context-menu is shown doesn't select the item.
if (modelNode.isValid() && !modelNode.isSelected())
setSelectedModelNode(modelNode);
m_edit3DWidget->showContextMenu(m_contextMenuPos, modelNode);
} else if (m_modelAtPosReqType == ModelAtPosReqType::MaterialDrop) {
if (m_droppedMaterial.isValid() && modelNode.isValid()) {
executeInTransaction(__FUNCTION__, [&] {
assignMaterialTo3dModel(modelNode, m_droppedMaterial);
});
}
}
m_modelAtPosReqType = ModelAtPosReqType::None;
}
void Edit3DView::sendInputEvent(QInputEvent *e) const
@@ -627,8 +642,17 @@ void Edit3DView::addQuick3DImport()
tr("Could not add QtQuick3D import to project."));
}
// This method is called upon right-clicking the view to prepare for context-menu creation. The actual
// context menu is created when modelAtPosReady() is received from puppet
void Edit3DView::startContextMenu(const QPoint &pos)
{
m_contextMenuPos = pos;
m_modelAtPosReqType = ModelAtPosReqType::ContextMenu;
}
void Edit3DView::dropMaterial(const ModelNode &matNode, const QPointF &pos)
{
m_modelAtPosReqType = ModelAtPosReqType::MaterialDrop;
m_droppedMaterial = matNode;
QmlDesignerPlugin::instance()->viewManager().nodeInstanceView()->view3DAction({View3DActionCommand::GetModelAtPos, pos});
}