Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Redor2016-07-07 14:18:23 +0000
committerLaurent Redor2016-07-07 15:26:34 +0000
commit8607cec17331b89136aac7940795a8c36b0d61f0 (patch)
treeb9ab17d0881cbe78aac2a9d5b4c8bf9c22c22954
parentebc68755874dabd8873a839806689b5021cdd59b (diff)
downloadorg.eclipse.sirius-8607cec17331b89136aac7940795a8c36b0d61f0.tar.gz
org.eclipse.sirius-8607cec17331b89136aac7940795a8c36b0d61f0.tar.xz
org.eclipse.sirius-8607cec17331b89136aac7940795a8c36b0d61f0.zip
[495119] 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: 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