Version: 1.5.1 (using KDE 3.5.0, Debian Package 4:3.5.0-3 (testing/unstable)) Compiler: Target: i486-linux-gnu OS: Linux (i686) release 2.6.12-1-686 1. Create a new Entity-Relationship diagram. 2. Create two entities (say A and B), connect them with relation. 3. Assign 1-1 multiplicity to the relation. 4. Move one of the entities (say A) around the screen. Multiplicity label moves in one direction for different directions of moving the entity which it belongs to. Looks like direction on entity's movement calculated incorrectly, thus circular movement of the entity causes its multiplicity label to run far away from it.
SVN commit 501786 by okellogg: calculateTextPosition(): Revert commit 468001 from http://www.geeksoc.org/~jr/umbrello/uml-devel/8974.html Peter, could you take another look? Thanks. BUG:120598 M +4 -1 ChangeLog M +7 -10 umbrello/associationwidget.cpp --- branches/KDE/3.5/kdesdk/umbrello/ChangeLog #501785:501786 @@ -1,6 +1,9 @@ Version 1.5.2 -* fix problem reordering methods in classes/interfaces (http://bugs.debian.org/348940) +* fix problem reordering methods in classes/interfaces (http://bugs.debian.org/348940, + http://bugs.kde.org/119991) +* Bugs/wishes from http://bugs.kde.org: +* Multiplicity labels positioned incorrectly when moving entities (120598) Version 1.5.1 --- branches/KDE/3.5/kdesdk/umbrello/umbrello/associationwidget.cpp #501785:501786 @@ -1752,17 +1752,14 @@ int x = 0, y = 0; if (role == tr_MultiA || role == tr_MultiB) { + const bool isHorizontal = (p.y() == q.y()); + const int atTop = p.y() + SPACE; + const int atBottom = p.y() - SPACE - textH; + const int atLeft = p.x() - SPACE - textW; + const int atRight = p.x() + SPACE; + y = (p.y() > q.y()) == isHorizontal ? atTop : atBottom; + x = (p.x() < q.x()) == isHorizontal ? atRight : atLeft; - if( (p.y() > q.y()) != is_top_or_bottom ) - y = p.y() + SPACE; - else - y = p.y() - SPACE - textH; - - if( p.x() < q.x() != is_top_or_bottom ) - x = p.x() + SPACE; - else - x = p.x() - SPACE - textW; - } else if (role == tr_ChangeA || role == tr_ChangeB) { if( p.y() > q.y() )