QmlDesigner: reuse code from AbstractFormEditorTool

Change-Id: I84ece6344cde0841f489f959cad6ec1f13e7fabc
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
This commit is contained in:
Marco Bubke
2014-07-21 13:05:35 +02:00
parent 25a6a811c8
commit 724db9269c
4 changed files with 14 additions and 23 deletions

View File

@@ -285,7 +285,6 @@ FormEditorItem *AbstractFormEditorTool::containerFormEditorItem(const QList<QGra
&& isNotAncestorOfItemInList(formEditorItem, selectedItemList) && isNotAncestorOfItemInList(formEditorItem, selectedItemList)
&& formEditorItem->isContainer()) && formEditorItem->isContainer())
return formEditorItem; return formEditorItem;
} }
return 0; return 0;

View File

@@ -170,24 +170,16 @@ static inline bool isAncestorOf(FormEditorItem *formEditorItem, FormEditorItem *
return false; return false;
} }
FormEditorItem* DragTool::calculateTargetContainer(const QList<QGraphicsItem*> &itemList, FormEditorItem * currentItem) FormEditorItem* DragTool::targetContainerOrRootItem(const QList<QGraphicsItem*> &itemList, FormEditorItem * currentItem)
{ {
foreach (QGraphicsItem *item, itemList) { FormEditorItem *formEditorItem = containerFormEditorItem(itemList, QList<FormEditorItem*>() << currentItem);
FormEditorItem *formEditorItem = FormEditorItem::fromQGraphicsItem(item);
if (formEditorItem if (!formEditorItem)
&& formEditorItem != currentItem formEditorItem = scene()->rootFormEditorItem();
&& formEditorItem->isContainer()
&& !formEditorItem->qmlItemNode().modelNode().metaInfo().isLayoutable()
&& !isAncestorOf(currentItem, formEditorItem))
return formEditorItem; return formEditorItem;
} }
if (scene()->rootFormEditorItem())
return scene()->rootFormEditorItem();
return 0;
}
void DragTool::formEditorItemsChanged(const QList<FormEditorItem*> & itemList) void DragTool::formEditorItemsChanged(const QList<FormEditorItem*> & itemList)
{ {
if (m_movingItem && itemList.contains(m_movingItem.data())) { if (m_movingItem && itemList.contains(m_movingItem.data())) {
@@ -323,7 +315,7 @@ static QString libraryResourceImageName(const QMimeData *mimeData)
void DragTool::createDragNode(const QMimeData *mimeData, const QPointF &scenePosition, const QList<QGraphicsItem*> &itemList) void DragTool::createDragNode(const QMimeData *mimeData, const QPointF &scenePosition, const QList<QGraphicsItem*> &itemList)
{ {
if (!m_dragNode.hasModelNode()) { if (!m_dragNode.hasModelNode()) {
FormEditorItem *targetContainerFormEditorItem = calculateTargetContainer(itemList); FormEditorItem *targetContainerFormEditorItem = targetContainerOrRootItem(itemList);
if (targetContainerFormEditorItem) { if (targetContainerFormEditorItem) {
QmlItemNode targetContainerQmlItemNode; QmlItemNode targetContainerQmlItemNode;
if (targetContainerFormEditorItem) if (targetContainerFormEditorItem)
@@ -348,7 +340,7 @@ void DragTool::dragMoveEvent(const QList<QGraphicsItem*> &itemList, QGraphicsSce
if (canHandleMimeData(event->mimeData())) { if (canHandleMimeData(event->mimeData())) {
event->accept(); event->accept();
if (m_dragNode.isValid()) { if (m_dragNode.isValid()) {
FormEditorItem *targetContainerItem = calculateTargetContainer(itemList); FormEditorItem *targetContainerItem = targetContainerOrRootItem(itemList);
if (targetContainerItem) { if (targetContainerItem) {
move(event->scenePos(), itemList); move(event->scenePos(), itemList);
} else { } else {
@@ -380,7 +372,7 @@ void DragTool::end(Snapper::Snapping useSnapping)
void DragTool::move(const QPointF &scenePos, const QList<QGraphicsItem*> &itemList) void DragTool::move(const QPointF &scenePos, const QList<QGraphicsItem*> &itemList)
{ {
if (m_movingItem) { if (m_movingItem) {
FormEditorItem *containerItem = calculateTargetContainer(itemList, m_movingItem.data()); FormEditorItem *containerItem = targetContainerOrRootItem(itemList, m_movingItem.data());
if (containerItem && m_movingItem->parentItem() && if (containerItem && m_movingItem->parentItem() &&
containerItem != m_movingItem->parentItem()) { containerItem != m_movingItem->parentItem()) {

View File

@@ -103,7 +103,7 @@ protected:
void abort(); void abort();
void createQmlItemNode(const ItemLibraryEntry &itemLibraryEntry, const QmlItemNode &parentNode, const QPointF &scenePos); void createQmlItemNode(const ItemLibraryEntry &itemLibraryEntry, const QmlItemNode &parentNode, const QPointF &scenePos);
void createQmlItemNodeFromImage(const QString &imageName, const QmlItemNode &parentNode, const QPointF &scenePos); void createQmlItemNodeFromImage(const QString &imageName, const QmlItemNode &parentNode, const QPointF &scenePos);
FormEditorItem *calculateTargetContainer(const QList<QGraphicsItem*> &itemList, FormEditorItem *urrentItem = 0); FormEditorItem *targetContainerOrRootItem(const QList<QGraphicsItem*> &itemList, FormEditorItem *urrentItem = 0);
void begin(QPointF scenePos); void begin(QPointF scenePos);
void end(); void end();
void end(Snapper::Snapping useSnapping); void end(Snapper::Snapping useSnapping);

View File

@@ -426,7 +426,7 @@ bool FormEditorItem::isContainer() const
NodeMetaInfo nodeMetaInfo = qmlItemNode().modelNode().metaInfo(); NodeMetaInfo nodeMetaInfo = qmlItemNode().modelNode().metaInfo();
if (nodeMetaInfo.isValid()) if (nodeMetaInfo.isValid())
return !nodeMetaInfo.defaultPropertyIsComponent(); return !nodeMetaInfo.defaultPropertyIsComponent() && !nodeMetaInfo.isLayoutable();
return true; return true;
} }