[umbrello] [Bug 447866] [class diagram] Multiple association ends are drawn on the same edge point

Oliver Kellogg bugzilla_noreply at kde.org
Wed Feb 16 17:22:12 GMT 2022


https://bugs.kde.org/show_bug.cgi?id=447866

--- Comment #12 from Oliver Kellogg <okellogg at users.sourceforge.net> ---
Git commit 8bb117e11a887be9704f8711dbb0ac4afa797eb2 by Oliver Kellogg.
Committed on 16/02/2022 at 17:21.
Pushed by okellogg into branch 'master'.

Followup to commit dc485c1 smoothing of associationwidget endpoints:

umbrello/umlwidgets/associationwidget.{h,cpp}
- Readd #define PIXEL_TOLERANCE but with value 30.
  Experiments show that this larger tolerance is required.
- Add function findIntercept(const QRectF& rect, const QPointF& point,
                                                       QPointF& result)
  returning bool true if the line from the center of `rect' to `point'
  intersects with one of rect's sides, and returning the intersection
  point in `result'.
- Remove functions updateRegionLineCount, doUpdates, getRegionCount.
- Re-remove obsoleted members (as previously done in commit f80bd68):
  findInterceptOnEdge, insertIntoLists, m_positions, m_positions_len,
  m_ordered.
- Static function setStartAndEndPoint factors the point calculation
  logic from updateAssociations() for reuse in other contexts.
- Declare function updateAssociations `static' and change arguments to
  UMLWidget *pWidget, AssociationWidgetList list.
  For details see documentation at the implementation.
- Readd function linePathEndsAt in symmetry with linePathStartsAt.

umbrello/umlwidgets/associationwidget.cpp
- In function linePathStartsAt,
  - document why we are not using widget->contains(lpStart);
  - remove bool result1 and its calculation.
- In function cleanup() remove calls that may lead to crash due to
  possible call of calculateEndingPoints on the AssociationWidget being
  removed.
- In function moveEvent test of m_role[RoleType::B].changeabilityWidget
  test movingPoint against pos-1 instead of against 1.
- In function calculateEndingPoints,
  - call setStartAndEndPoint(this, m_role[RoleType::A].umlWidget);
  - call setStartAndEndPoint(this, m_role[RoleType::B].umlWidget);
  - define local assocList as shorthand for m_scene->associationList();
  - call updateAssociations(m_role[RoleType::A].umlWidget, assocList);
  - call updateAssociations(m_role[RoleType::B].umlWidget, assocList).
- Reduce function updateAssociations to loop over the passed in
  AssociationWidgetList and call setStartAndEndPoint on each
  assocwidget.

M  +214  -761  umbrello/umlwidgets/associationwidget.cpp
M  +5    -15   umbrello/umlwidgets/associationwidget.h

https://invent.kde.org/sdk/umbrello/commit/8bb117e11a887be9704f8711dbb0ac4afa797eb2

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the umbrello-devel mailing list