]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
Fix issue with updates of SCL module outline views. 34/3034/4
authorReino Ruusu <reino.ruusu@semantum.fi>
Wed, 19 Jun 2019 08:26:47 +0000 (11:26 +0300)
committerJani Simomaa <jani.simomaa@semantum.fi>
Tue, 23 Jul 2019 06:05:25 +0000 (06:05 +0000)
gitlab #317

Change-Id: Ia749729d4410f6deee9176d01f572768f959b88e

bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/outline/SCLModuleOutlinePage.java

index 80e34c3746565f70cdf625cfcde5b19e5e2326a9..f19081754e71b1fc2bc034ca1be8d6345c7e9ff1 100644 (file)
@@ -30,6 +30,7 @@ import org.simantics.scl.osgi.SCLOsgi;
 import org.simantics.scl.ui.Activator;
 import org.simantics.scl.ui.editor2.SCLModuleEditor2;
 import org.simantics.scl.ui.editor2.SCLModuleEditorInput;
+import org.simantics.utils.ui.SWTUtils;
 
 public class SCLModuleOutlinePage extends ContentOutlinePage {
 
@@ -69,16 +70,20 @@ public class SCLModuleOutlinePage extends ContentOutlinePage {
 
             @Override
             public void notifyAboutUpdate() {
-                parent.getDisplay().asyncExec(() -> {
+                if (parent.isDisposed())
+                    return;
+                
+                Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleSource.getModuleName(), updateListener);
+                SWTUtils.asyncExec(parent, () -> {
                     if (!outlineViewer.getControl().isDisposed()) {
+                        outlineViewer.setInput(module.didSucceed() ? module.getResult() : null);
                         outlineViewer.refresh();
                     }
                 });
             }
         };
-        Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleSource.getModuleName(), updateListener);
-        Module result = module.getResult();
-        outlineViewer.setInput(result);
+        
+        updateListener.notifyAboutUpdate();
     }
 
     @Override