[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