diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp index f2f95f52cd30fb8d8a7f7f8ebe9806eb4f7514d2..865583602f23079463c96e94e3a028cfa8f5810a 100644 --- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp @@ -185,12 +185,20 @@ void DragTool::createQmlItemNodeFromImage(const QString &imageName, QmlItemNode m_selectionIndicator.setItems(scene()->itemsForQmlItemNodes(nodeList)); } +static inline bool isAncestorOf(FormEditorItem *formEditorItem, FormEditorItem *newParentItem) +{ + if (formEditorItem && newParentItem) + return formEditorItem->isAncestorOf(newParentItem); + return false; +} + FormEditorItem* DragTool::calculateContainer(const QPointF &point, FormEditorItem * currentItem) { QList<QGraphicsItem *> list = scene()->items(point); foreach (QGraphicsItem *item, list) { FormEditorItem *formEditorItem = FormEditorItem::fromQGraphicsItem(item); - if (formEditorItem && formEditorItem != currentItem && formEditorItem->isContainer()) + if (formEditorItem && formEditorItem != currentItem && formEditorItem->isContainer() + && !isAncestorOf(currentItem, formEditorItem)) return formEditorItem; }