[Uml-devel] branches/work/soc-umbrello/umbrello

Gopala Krishna A krishna.ggk at gmail.com
Wed Aug 27 17:33:20 UTC 2008


SVN commit 853411 by gopala:

1) Fixed Arrow direction of MessageWidget with Synchrounous type.
2) Added some more initialization code for MessageWidget (slotDelayedInit)
3) Fix crash due to non availability of UMLScene initially.



 M  +27 -21    messagewidget.cpp  


--- branches/work/soc-umbrello/umbrello/messagewidget.cpp #853410:853411
@@ -313,7 +313,6 @@
  */
 void MessageWidget::handleObjectMove(ObjectWidget *wid)
 {
-    uDebug() << "Called";
     if (!hasObjectWidget(wid)) {
         uError() << "ObjectWidget " << (void*)wid
                  << "doesn't belong to this MessageWidget";
@@ -574,21 +573,23 @@
 
 QVariant MessageWidget::itemChange(GraphicsItemChange change, const QVariant& value)
 {
-    if (change == ItemPositionChange && umlScene()->isMouseMovingItems()) {
-        QPointF newPoint = value.toPointF();
-        if (umlScene()->mouseGrabberItem() == this) {
-            newPoint.rx() = x(); // No horizontal movement
+    if (umlScene()) {
+        if (change == ItemPositionChange && umlScene()->isMouseMovingItems()) {
+            QPointF newPoint = value.toPointF();
+            if (umlScene()->mouseGrabberItem() == this) {
+                newPoint.rx() = x(); // No horizontal movement
+            }
+            newPoint.ry() = qMax(newPoint.y(), minY());
+            return newPoint;
         }
-        newPoint.ry() = qMax(newPoint.y(), minY());
-        return newPoint;
-    }
-    else if (change == ItemPositionHasChanged) {
-        if (m_objectWidgets[Uml::A]) {
-            m_objectWidgets[Uml::A]->adjustSequentialLineEnd();
-        }
+        else if (change == ItemPositionHasChanged) {
+            if (m_objectWidgets[Uml::A]) {
+                m_objectWidgets[Uml::A]->adjustSequentialLineEnd();
+            }
 
-        if (m_objectWidgets[Uml::B]) {
-            m_objectWidgets[Uml::B]->adjustSequentialLineEnd();
+            if (m_objectWidgets[Uml::B]) {
+                m_objectWidgets[Uml::B]->adjustSequentialLineEnd();
+            }
         }
     }
     return NewUMLRectWidget::itemChange(change, value);
@@ -716,7 +717,7 @@
         QLineF returnLine(syncBox.right(), returnLineY, sz.width(), returnLineY);
         // Draw arrowhead first only to use the current pen style for the head.
         Widget_Utils::drawArrowHead(painter, returnLine.p2(), ArrowSize,
-                                    Qt::LeftArrow, nonSolid);
+                                    Qt::RightArrow, nonSolid);
         // Now set a dashed pen style for the return line drawing.
         QPen pen(painter->pen());
         pen.setStyle(Qt::DashLine);
@@ -860,14 +861,19 @@
 
 void MessageWidget::slotDelayedInit()
 {
-    if (m_objectWidgets[Uml::A]) {
-        m_objectWidgets[Uml::A]->messageAdded(this);
-        m_objectWidgets[Uml::A]->adjustSequentialLineEnd();
+    ObjectWidget *objA = m_objectWidgets[Uml::A];
+    ObjectWidget *objB = m_objectWidgets[Uml::B];
+
+    if (objA) {
+        objA->messageAdded(this);
+        handleObjectMove(objA);
+        objA->adjustSequentialLineEnd();
     }
 
-    if (m_objectWidgets[Uml::B]) {
-        m_objectWidgets[Uml::B]->messageAdded(this);
-        m_objectWidgets[Uml::B]->adjustSequentialLineEnd();
+    if (objB && objB != objA) {
+        objB->messageAdded(this);
+        handleObjectMove(objB);
+        objB->adjustSequentialLineEnd();
     }
 }
 




More information about the umbrello-devel mailing list