diff options
| author | Laurent Redor | 2016-07-07 14:18:23 +0000 |
|---|---|---|
| committer | Laurent Redor | 2016-08-23 13:50:05 +0000 |
| commit | 161dec13bf10e06ba2f3f880cf73f213ff3606cb (patch) | |
| tree | 4059964ce9375379800426a2057d3d13c81df273 | |
| parent | 2c6de92b0c405e5722675474917c4714f9b472ee (diff) | |
| download | org.eclipse.sirius-161dec13bf10e06ba2f3f880cf73f213ff3606cb.tar.gz org.eclipse.sirius-161dec13bf10e06ba2f3f880cf73f213ff3606cb.tar.xz org.eclipse.sirius-161dec13bf10e06ba2f3f880cf73f213ff3606cb.zip | |
[499828] Avoid an Invalid thread access
This can happen for example if a representation containing regions
container is initialized during the viewpoint activation (sample of bug
492607).
Bug: 499828
Cherry-picked-from: 495119
Change-Id: If324dad3e8b06b7c73b8e0b0156d726885ed6621
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/internal/operation/RegionContainerUpdateLayoutOperation.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/operation/RegionContainerUpdateLayoutOperation.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/operation/RegionContainerUpdateLayoutOperation.java index dd6edf9839..8e75c7390d 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/operation/RegionContainerUpdateLayoutOperation.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/operation/RegionContainerUpdateLayoutOperation.java @@ -56,6 +56,7 @@ import org.eclipse.sirius.viewpoint.BasicLabelStyle; import org.eclipse.sirius.viewpoint.DRepresentationElement; import org.eclipse.sirius.viewpoint.Style; import org.eclipse.sirius.viewpoint.description.RepresentationElementMapping; +import org.eclipse.swt.SWTException; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; @@ -392,7 +393,15 @@ public class RegionContainerUpdateLayoutOperation extends AbstractModelChangeOpe if (siriusStyle instanceof BasicLabelStyle) { BasicLabelStyle bls = (BasicLabelStyle) siriusStyle; Font defaultFont = VisualBindingManager.getDefault().getFontFromLabelStyle(bls, (String) viewQuery.getDefaultValue(NotationPackage.Literals.FONT_STYLE__FONT_NAME)); - Dimension titleDimension = FigureUtilities.getStringExtents(dnc.getName(), defaultFont); + Dimension titleDimension; + try { + titleDimension = FigureUtilities.getStringExtents(dnc.getName(), defaultFont); + } catch (SWTException e) { + // Probably an "Invalid thread access" (FigureUtilities + // creates a new Shell to compute the label size). So in + // this case, we use a default size. + titleDimension = new Dimension(20, 12); + } titleHeight = titleDimension.height; if (bls.isShowIcon()) { // Also consider the icon size |
