diff options
| author | Maxime Porhel | 2015-09-11 14:50:48 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2015-09-14 09:50:03 +0000 |
| commit | d5fdd89eb12714b0a0d1ccb73a54daa3065b45a7 (patch) | |
| tree | 39c446314286971402dd4a73bf1a227e214a6ddb | |
| parent | 5f188ca0be9ec00fe810360d29fbeb8d3b9ba253 (diff) | |
| download | org.eclipse.sirius-d5fdd89eb12714b0a0d1ccb73a54daa3065b45a7.tar.gz org.eclipse.sirius-d5fdd89eb12714b0a0d1ccb73a54daa3065b45a7.tar.xz org.eclipse.sirius-d5fdd89eb12714b0a0d1ccb73a54daa3065b45a7.zip | |
[477208] Avoid NPE when a part without semantic element is selected
This can occurs at least with Note, Text and NoteAttachment edit parts.
This has been discovered during reproduction attempt with a Note on the
diagram.
Bug: 477208
Change-Id: I4e175fdb4996ad00c484c64650f3075f7230bffe
Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
| -rw-r--r-- | plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java index 24c6e4a5e3..f4590ac30a 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java @@ -234,14 +234,19 @@ public class EditPartQuery { */ public boolean isFreeFormContainerChildrenPresentation() { boolean isFreeForm = true; - EObject eContainer = part.resolveSemanticElement().eContainer(); - if (eContainer instanceof DNodeList) { + EObject semElt = part.resolveSemanticElement(); + if (semElt == null) { isFreeForm = false; - } else if (eContainer instanceof DNodeContainer) { - DNodeContainer container = (DNodeContainer) eContainer; - ContainerLayout childrenPresentation = container.getChildrenPresentation(); - if (!childrenPresentation.equals(ContainerLayout.FREE_FORM)) { + } else { + EObject eContainer = semElt.eContainer(); + if (eContainer instanceof DNodeList) { isFreeForm = false; + } else if (eContainer instanceof DNodeContainer) { + DNodeContainer container = (DNodeContainer) eContainer; + ContainerLayout childrenPresentation = container.getChildrenPresentation(); + if (!childrenPresentation.equals(ContainerLayout.FREE_FORM)) { + isFreeForm = false; + } } } return isFreeForm; |
