summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2020-02-06 16:30:01 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2020-02-07 10:17:47 +0000
commit7c992f5450ddf5b9fdd676c82a4832f092f8fbfa (patch)
tree00b9515e04324970892eba02ccb895e7597fd785 /share
parentf4111fcb1881a2756960f1e2947abbe7e1118cb9 (diff)
downloadqt-creator-7c992f5450ddf5b9fdd676c82a4832f092f8fbfa.tar.gz
QmlDesigner: Insert a node dragged to 3d edit view into correct scene
Added scene instance id to the drop command. Change-Id: I42df07fec823083454ad5a70ccafa318d05ab224 Fixes: QDS-1594 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.cpp9
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.h4
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp5
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h2
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp12
5 files changed, 23 insertions, 9 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.cpp
index aa7c826065..6c851e3a43 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.cpp
@@ -29,14 +29,16 @@
namespace QmlDesigner {
-Drop3DLibraryItemCommand::Drop3DLibraryItemCommand(const QByteArray &itemData)
- : m_itemData(itemData)
+Drop3DLibraryItemCommand::Drop3DLibraryItemCommand(const QByteArray &itemData, qint32 sceneRootId)
+ : m_itemData(itemData),
+ m_sceneRootId(sceneRootId)
{
}
QDataStream &operator<<(QDataStream &out, const Drop3DLibraryItemCommand &command)
{
out << command.itemData();
+ out << command.sceneRootId();
return out;
}
@@ -44,13 +46,14 @@ QDataStream &operator<<(QDataStream &out, const Drop3DLibraryItemCommand &comman
QDataStream &operator>>(QDataStream &in, Drop3DLibraryItemCommand &command)
{
in >> command.m_itemData;
+ in >> command.m_sceneRootId;
return in;
}
bool operator==(const Drop3DLibraryItemCommand &first, const Drop3DLibraryItemCommand &second)
{
- return first.m_itemData == second.m_itemData;
+ return first.m_itemData == second.m_itemData && first.m_sceneRootId == second.m_sceneRootId;
}
} // namespace QmlDesigner
diff --git a/share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.h b/share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.h
index 1aa11a85f9..4bc36e1ebd 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.h
+++ b/share/qtcreator/qml/qmlpuppet/commands/drop3dlibraryitemcommand.h
@@ -41,13 +41,15 @@ class Drop3DLibraryItemCommand
const Drop3DLibraryItemCommand &second);
public:
- explicit Drop3DLibraryItemCommand(const QByteArray &itemData);
+ explicit Drop3DLibraryItemCommand(const QByteArray &itemData, qint32 sceneRootId);
Drop3DLibraryItemCommand() = default;
QByteArray itemData() const { return m_itemData; }
+ qint32 sceneRootId() const { return m_sceneRootId; }
private:
QByteArray m_itemData;
+ qint32 m_sceneRootId;
};
QDataStream &operator<<(QDataStream &out, const Drop3DLibraryItemCommand &command);
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
index 5f277bf6bb..d772844b3c 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
@@ -1180,9 +1180,10 @@ ChangeSelectionCommand NodeInstanceServer::createChangeSelectionCommand(const QL
return ChangeSelectionCommand(idVector);
}
-Drop3DLibraryItemCommand NodeInstanceServer::createDrop3DLibraryItemCommand(const QByteArray &itemData)
+Drop3DLibraryItemCommand NodeInstanceServer::createDrop3DLibraryItemCommand(const QByteArray &itemData,
+ qint32 sceneRootId)
{
- return Drop3DLibraryItemCommand(itemData);
+ return Drop3DLibraryItemCommand(itemData, sceneRootId);
}
ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QVector<InstancePropertyPair> &propertyList) const
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
index 861b674af9..1c3ee59791 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
@@ -183,7 +183,7 @@ protected:
ChildrenChangedCommand createChildrenChangedCommand(const ServerNodeInstance &parentInstance, const QList<ServerNodeInstance> &instanceList) const;
ComponentCompletedCommand createComponentCompletedCommand(const QList<ServerNodeInstance> &instanceList);
ChangeSelectionCommand createChangeSelectionCommand(const QList<ServerNodeInstance> &instanceList);
- Drop3DLibraryItemCommand createDrop3DLibraryItemCommand(const QByteArray &itemData);
+ Drop3DLibraryItemCommand createDrop3DLibraryItemCommand(const QByteArray &itemData, qint32 sceneRootId);
void addChangedProperty(const InstancePropertyPair &property);
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
index 6e332f8b63..08cd930a57 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
@@ -109,8 +109,16 @@ bool Qt5InformationNodeInstanceServer::eventFilter(QObject *, QEvent *event)
case QEvent::Drop: {
QDropEvent *dropEvent = static_cast<QDropEvent *>(event);
QByteArray data = dropEvent->mimeData()->data(QStringLiteral("application/vnd.bauhaus.itemlibraryinfo"));
- if (!data.isEmpty())
- nodeInstanceClient()->library3DItemDropped(createDrop3DLibraryItemCommand(data));
+ if (!data.isEmpty()) {
+ ServerNodeInstance sceneInstance;
+ if (hasInstanceForObject(m_active3DScene))
+ sceneInstance = instanceForObject(m_active3DScene);
+ else if (hasInstanceForObject(m_active3DView))
+ sceneInstance = instanceForObject(m_active3DView);
+
+ nodeInstanceClient()->library3DItemDropped(createDrop3DLibraryItemCommand(
+ data, sceneInstance.instanceId()));
+ }
} break;