diff options
| author | Laurent Redor | 2014-09-11 14:25:19 +0000 |
|---|---|---|
| committer | Laurent Redor | 2014-09-11 15:42:28 +0000 |
| commit | 65cd3be3a1049204e987df85c1daefed383f124c (patch) | |
| tree | 17e2fa2b2ce31474516142891379b2f379e33c03 | |
| parent | 4033181353a99eda5cddd7a471fafc88990ec369 (diff) | |
| download | org.eclipse.sirius-65cd3be3a1049204e987df85c1daefed383f124c.tar.gz org.eclipse.sirius-65cd3be3a1049204e987df85c1daefed383f124c.tar.xz org.eclipse.sirius-65cd3be3a1049204e987df85c1daefed383f124c.zip | |
[441417] Fix a regression detected since the fix of this issue.
The feedback layer is created wrongly in some cases (and not removed
after). See comment 4 of bug 441417 for more detail on steps to
reproduce.
Bug: 441417
Change-Id: Ib0e2a3dd23c1af88bd2e53f38c25eaecaf6aa769
Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
| -rw-r--r-- | plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/SpecificBorderItemSelectionEditPolicy.java | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/SpecificBorderItemSelectionEditPolicy.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/SpecificBorderItemSelectionEditPolicy.java index e6aad00bf1..31192b54e9 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/SpecificBorderItemSelectionEditPolicy.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/SpecificBorderItemSelectionEditPolicy.java @@ -121,6 +121,18 @@ public class SpecificBorderItemSelectionEditPolicy extends ResizableEditPolicyEx private EditPart feedbacksActivated; /** + * Status of the feedback figure. True if the feedback figure is displayed + * (created by the showChangeBoundsFeedback(ChangeBoundsRequest) method), + * false if not already created or deleted (with method + * eraseChangeBoundsFeedback(ChangeBoundsRequest)).<BR> + * This avoids to create this feedback figure in method + * getFiguresToIgnore(ChangeBoundsRequest). <BR> + * This was done because, there is no way to know if the feedback figure is + * null or not (private field). + */ + private boolean feedbackFigureDisplayed; + + /** * {@inheritDoc} * * @see org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableEditPolicyEx#eraseSourceFeedback(org.eclipse.gef.Request) @@ -143,6 +155,12 @@ public class SpecificBorderItemSelectionEditPolicy extends ResizableEditPolicyEx } } + @Override + protected void eraseChangeBoundsFeedback(ChangeBoundsRequest request) { + feedbackFigureDisplayed = false; + super.eraseChangeBoundsFeedback(request); + } + /** * Return the list of existing feedback figures containing in the request. * If the request does not contains feedback figures, an empty list is @@ -213,6 +231,7 @@ public class SpecificBorderItemSelectionEditPolicy extends ResizableEditPolicyEx IFigure targetFigure = targetAbstractGraphicalEditPart.getFigure(); final IFigure feedback = getDragSourceFeedbackFigure(); + feedbackFigureDisplayed = true; final PrecisionRectangle rect = new PrecisionRectangle(getInitialFeedbackBounds()); getHostFigure().translateToAbsolute(rect); rect.translate(request.getMoveDelta()); @@ -670,7 +689,11 @@ public class SpecificBorderItemSelectionEditPolicy extends ResizableEditPolicyEx figuresToIgnore.add(((org.eclipse.gef.GraphicalEditPart) part).getFigure()); } } - figuresToIgnore.add(getDragSourceFeedbackFigure()); + // Add the feedback figure only if it was created before (by a drag for + // example). + if (feedbackFigureDisplayed) { + figuresToIgnore.add(getDragSourceFeedbackFigure()); + } return figuresToIgnore; } |
