Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Redor2016-07-07 14:18:23 +0000
committerLaurent Redor2016-08-23 13:50:05 +0000
commit161dec13bf10e06ba2f3f880cf73f213ff3606cb (patch)
tree4059964ce9375379800426a2057d3d13c81df273
parent2c6de92b0c405e5722675474917c4714f9b472ee (diff)
downloadorg.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.java11
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

Back to the top