diff --git a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp index b45835dfd15..3d852a2fb00 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp @@ -924,14 +924,29 @@ void FormEditorTransitionItem::paint(QPainter *painter, const QStyleOptionGraphi QmlFlowActionAreaNode areaNode = ModelNode(); if (from.isValid() && to.isValid()) + + bool isStartLine = false; + for (const QmlFlowActionAreaNode &area : from.flowActionAreas()) { if (area.targetTransition() == qmlItemNode().modelNode()) areaNode = area; } + } else { + if (from == qmlItemNode().rootModelNode()) { + isStartLine = true; + } else { + + } + } + QRectF fromRect = QmlItemNode(from).instanceBoundingRect(); fromRect.translate(QmlItemNode(from).flowPosition()); + if (isStartLine) { + fromRect = QRectF(0,0,100,100); + fromRect.translate(QmlItemNode(to).flowPosition()- QPoint(200, 0)); + } if (areaNode.isValid()) { fromRect = QmlItemNode(areaNode).instanceBoundingRect(); @@ -942,6 +957,11 @@ void FormEditorTransitionItem::paint(QPainter *painter, const QStyleOptionGraphi QRectF toRect = QmlItemNode(to).instanceBoundingRect(); toRect.translate(QmlItemNode(to).flowPosition()); + if (isStartLine) { + fromRect = QRectF(0,0,50,50); + fromRect.translate(QmlItemNode(to).flowPosition() + QPoint(-120, toRect.height() / 2 - 25)); + } + toRect.translate(-pos()); fromRect.translate(-pos()); @@ -961,6 +981,9 @@ void FormEditorTransitionItem::paint(QPainter *painter, const QStyleOptionGraphi QColor color = "#e71919"; + if (isStartLine) + color = "blue"; + bool dash = false; if (qmlItemNode().modelNode().hasAuxiliaryData("color")) @@ -985,6 +1008,23 @@ void FormEditorTransitionItem::paint(QPainter *painter, const QStyleOptionGraphi paintConnection(painter, fromRect, toRect, width, adjustedWidth ,color, dash, outOffset, inOffset, breakOffset); + if (isStartLine) { + QPen pen; + pen.setCosmetic(true); + + pen.setColor(color); + painter->setPen(pen); + painter->drawRect(fromRect); + + if (scaleFactor > 0.4) { + painter->drawLine(fromRect.topRight() + QPoint(20,10), fromRect.bottomRight() + QPoint(20,-10)); + painter->drawLine(fromRect.topRight() + QPoint(25,12), fromRect.bottomRight() + QPoint(25,-12)); + painter->drawLine(fromRect.topRight() + QPoint(30,15), fromRect.bottomRight() + QPoint(30,-15)); + painter->drawLine(fromRect.topRight() + QPoint(35,17), fromRect.bottomRight() + QPoint(35,-17)); + painter->drawLine(fromRect.topRight() + QPoint(40,20), fromRect.bottomRight() + QPoint(40,-20)); + } + } + painter->restore(); }