diff options
| author | Pierre-Charles David | 2015-08-10 08:40:47 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2015-08-10 08:40:50 +0000 |
| commit | cb3b9eef35b9eea2cd9000a0c12fcf157c9f1111 (patch) | |
| tree | a8fc159d9afb2107e93eabf398e0f858baefbf19 | |
| parent | a55479375c6d47e65d905b88ec3f868aa016db65 (diff) | |
| download | org.eclipse.sirius-cb3b9eef35b9eea2cd9000a0c12fcf157c9f1111.tar.gz org.eclipse.sirius-cb3b9eef35b9eea2cd9000a0c12fcf157c9f1111.tar.xz org.eclipse.sirius-cb3b9eef35b9eea2cd9000a0c12fcf157c9f1111.zip | |
[430086] Fix potential ClassCastException
Avoid unchecked cast in GEF's getCurrentConstraintFor() by inlining a
slightly more robust version in our overridden method.
Bug: 430086
Change-Id: I60df6bc6623329e6e1ff0e53e7e80c1ca11be8f5
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
| -rw-r--r-- | plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/AirXYLayoutEditPolicy.java | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/AirXYLayoutEditPolicy.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/AirXYLayoutEditPolicy.java index be83fe5554..6d7f735cd6 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/AirXYLayoutEditPolicy.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/AirXYLayoutEditPolicy.java @@ -14,6 +14,7 @@ import java.util.List; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.draw2d.FigureCanvas; +import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; @@ -258,18 +259,15 @@ public class AirXYLayoutEditPolicy extends XYLayoutEditPolicy { return element instanceof DNodeContainer && new DNodeContainerExperimentalQuery((DNodeContainer) element).isRegionContainer(); } - /** - * {@inheritDoc} - * - * @see org.eclipse.gef.editpolicies.XYLayoutEditPolicy#getCurrentConstraintFor(org.eclipse.gef.GraphicalEditPart) - */ @Override - protected Rectangle getCurrentConstraintFor(final GraphicalEditPart child) { - Rectangle result = super.getCurrentConstraintFor(child); - if (result == null) { - result = new Rectangle(0, 0, -1, -1); + protected Rectangle getCurrentConstraintFor(GraphicalEditPart child) { + IFigure fig = child.getFigure(); + Object constraint = fig.getParent().getLayoutManager().getConstraint(fig); + if (constraint instanceof Rectangle) { + return (Rectangle) constraint; + } else { + return new Rectangle(0, 0, -1, -1); } - return result; } /** |
