Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Redor2014-09-11 14:25:19 +0000
committerLaurent Redor2014-09-11 15:42:28 +0000
commit65cd3be3a1049204e987df85c1daefed383f124c (patch)
tree17e2fa2b2ce31474516142891379b2f379e33c03
parent4033181353a99eda5cddd7a471fafc88990ec369 (diff)
downloadorg.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.java25
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;
}

Back to the top