* Bug #13401 fixed - Closing Scilab during halt() did not quit the Scilab process. 32/14532/2
Clément DAVID [Fri, 16 May 2014 08:10:37 +0000 (10:10 +0200)]
Change-Id: I6bf6f0aa0bef710962f91ab8dbcf1890fe420498

scilab/CHANGES_5.5.X
scilab/modules/console/src/java/org/scilab/modules/console/SciInputCommandView.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/console/SwingScilabConsole.java
scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/variablebrowser/ScilabVariableBrowser.java

index c2fb1a8..b568b1b 100644 (file)
@@ -33,6 +33,8 @@ Scilab Bug Fixes
 
 * Bug #13397 fixed - saveGui() returned an undocumented boolean parameter (success/failure flag).
 
+* Bug #13401 fixed - Closing Scilab during halt() did not quit the Scilab process.
+
 
 Xcos Bug Fixes
 ==============
index c801cee..b8b91bf 100644 (file)
@@ -188,6 +188,15 @@ public class SciInputCommandView extends ConsoleTextPane implements InputCommand
     }
 
     /**
+     * Interrupt the 'await input commant' queue. This will throw an {@link InterruptedException} back to the Scilab engine.
+     */
+    final public void interrupt() {
+        if (concurrentThread != null) {
+            concurrentThread.interrupt();
+        }
+    }
+
+    /**
      * Sets the command buffer after a user input in input command view
      * @param command the string to set to the buffer
      * @param displayFlag boolean indicating if the command has to be displayed
index 7a4c73d..b9f57ea 100644 (file)
@@ -43,6 +43,7 @@ import org.scilab.modules.action_binding.InterpreterManagement;
 import org.scilab.modules.console.OneCharKeyEventListener;
 import org.scilab.modules.console.SciConsole;
 import org.scilab.modules.console.SciHistoryManager;
+import org.scilab.modules.console.SciInputCommandView;
 import org.scilab.modules.console.SciOutputView;
 import org.scilab.modules.graphic_objects.graphicObject.CallBack;
 import org.scilab.modules.gui.bridge.contextmenu.SwingScilabContextMenu;
@@ -59,6 +60,7 @@ import org.scilab.modules.gui.utils.Size;
 import org.scilab.modules.history_manager.HistoryManagement;
 import org.scilab.modules.localization.Messages;
 import org.scilab.modules.commons.xml.XConfiguration;
+
 import static org.scilab.modules.commons.xml.XConfiguration.XConfAttribute;
 
 import com.artenum.rosetta.interfaces.ui.InputCommandView;
@@ -254,6 +256,9 @@ public class SwingScilabConsole extends SciConsole implements SimpleConsole {
         if (getCanReadUserInputValue().availablePermits() == 0) {
             setUserInputValue((int) 'n');
         }
+
+        // interrupt any mscanf call (input, halt and so on)
+        ((SciInputCommandView) this.getConfiguration().getInputCommandView()).interrupt();
     }
 
     /**
index f08c39c..5409af8 100644 (file)
@@ -95,7 +95,9 @@ public final class ScilabVariableBrowser implements VariableBrowser {
         if (instance != null) {
             SwingUtilities.invokeLater(new Runnable() {
                 public void run() {
-                    instance.setData(data);
+                    if (instance != null) {
+                        instance.setData(data);
+                    }
                 }
             });
         }