Bug 112017 - Activity Diagram Associations snap precedence to boxes/partitions/swimlanes before any other objects in box region and unable to select other actions
Summary: Activity Diagram Associations snap precedence to boxes/partitions/swimlanes b...
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: 1.4.2
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: Umbrello Development Group
URL:
Keywords:
: 82405 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-09-04 05:59 UTC by Anthony Green
Modified: 2005-09-06 23:47 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anthony Green 2005-09-04 05:59:08 UTC
Version:           1.4.2 (using KDE KDE 3.4.0)
Installed from:    Compiled From Sources
Compiler:          GCC 3.4.3 Gnu ld 
OS:                Linux

Since Umbrello 1.4.2, activity diagram associations have snap precedence to boxes/partitions/swimlanes before any other objects in box region and unable to select other actions.

The result is any box must be removed from the region where actions are present before it is possible to make an associate from any item outside the box. If the box is not moved clear of the actions concerned the association will snap to the box. Hence, any item the pointer is over for an action within a box region will not set the association endpoint to that action.

This is a recent change in behaviour and degrades the usability of Umbrello activity diagrams with swimlanes/partitions substantially.
Comment 1 Oliver Kellogg 2005-09-04 10:07:44 UTC
SVN commit 456928 by okellogg:

BUG:112017 - setSelectedWidget(): First check associations, then messages, then
other widgets.


 M  +1 -1      ChangeLog  
 M  +31 -32    umbrello/toolbarstate.cpp  


--- branches/KDE/3.5/kdesdk/umbrello/ChangeLog #456927:456928
@@ -11,7 +11,7 @@
 * Bugs fixed / wishes implemented (see http://bugs.kde.org)
  57588  58809  66461  67719  72016  79433  87252  88117  97162 105564
 108223 109591 109636 110216 110231 110379 111088 111470 111502 111759
-111768
+111768 112017
 
 Version 1.4.2 (maintenance release)
 
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/toolbarstate.cpp #456927:456928
@@ -169,9 +169,38 @@
     UMLWidget* backup = 0;
     UMLWidget* boxBackup = 0;
 
+    // Check associations.
+    AssociationWidgetListIt assoc_it(m_pUMLView->getAssociationList());
+    AssociationWidget* assocwidget = 0;
+    while ((assocwidget = assoc_it.current()) != NULL) {
+        if (assocwidget->onAssociation( me->pos() ))
+        {
+            // TODO: Fix this. It makes a callback to the association mousePressEvent function.
+            assocwidget->mousePressEvent(me);
+            m_pUMLView->setMoveAssoc(assocwidget);
+            m_bWidgetSelected = true;
+            return true;
+        }
+        ++assoc_it;
+    }
+    m_pUMLView->setMoveAssoc(NULL);
+
+    // Check messages.
+    MessageWidgetListIt mit( m_pUMLView->getMessageList() );
+    UMLWidget *obj = 0;
+    while ((obj = (UMLWidget*)mit.current()) != 0) {
+        if (obj->isVisible() && obj->onWidget(me->pos())) {
+            m_pUMLView->setOnWidget( obj );
+            obj ->  mousePressEvent( me );
+            m_bWidgetSelected = true;
+            return true;
+        }
+        ++mit;
+    }
+
     // Check widgets.
     UMLWidgetListIt it( m_pUMLView->getWidgetList() );
-    UMLWidget* obj = 0;
+    obj = 0;
     while ( (obj = it.current()) != 0 ) {
         ++it;
         if( !obj->isVisible() || !obj->onWidget(me->pos()) )
@@ -192,7 +221,7 @@
         } else {
             backup = obj;
         }
-    }//end while
+    }
     //if backup is set then let it have the event
     if(backup) {
         backup -> mousePressEvent( me );
@@ -201,20 +230,6 @@
         m_bWidgetSelected = true;
         return true;
     }
-
-    // Check messages.
-    MessageWidgetListIt mit( m_pUMLView->getMessageList() );
-    obj = 0;
-    while ((obj = (UMLWidget*)mit.current()) != 0) {
-        if (obj->isVisible() && obj->onWidget(me->pos())) {
-            m_pUMLView->setOnWidget( obj );
-            obj ->  mousePressEvent( me );
-            m_bWidgetSelected = true;
-            return true;
-        }
-        ++mit;
-    }
-
     // Boxes have lower priority.
     if (boxBackup) {
         boxBackup -> mousePressEvent( me );
@@ -224,22 +239,6 @@
         return true;
     }
 
-    // Check associations.
-    AssociationWidgetListIt assoc_it(m_pUMLView->getAssociationList());
-    AssociationWidget* assocwidget = 0;
-    while((assocwidget=assoc_it.current())) {
-        if( assocwidget -> onAssociation( me -> pos() ))
-        {
-            // TODO: Fix this. It makes a callback to the association mousePressEvent function.
-            assocwidget->mousePressEvent(me);
-            m_pUMLView->setMoveAssoc(assocwidget);
-
-            m_bWidgetSelected = true;
-            return true;
-        }
-        ++assoc_it;
-    }
-    m_pUMLView->setMoveAssoc(NULL);
     m_pUMLView->setOnWidget(NULL);
 
     m_bWidgetSelected = false;
Comment 2 Oliver Kellogg 2005-09-06 23:47:37 UTC
*** Bug 82405 has been marked as a duplicate of this bug. ***