[ui_data] prevent spurious FileBrowser ScrollBar reset after 93c93ccf 54/21254/2
St├ęphane Mottelet [Fri, 24 Jan 2020 14:57:02 +0000 (15:57 +0100)]
Also fix missing semicolon in chdir command used by navigation arrows.

Change-Id: I1be0491c0402c8db4231217f245cc2202449621a

scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/filebrowser/ScilabFileBrowserHistory.java
scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/filebrowser/SwingScilabTreeTable.java

index a39fc49..6e1be80 100644 (file)
@@ -197,7 +197,7 @@ public class ScilabFileBrowserHistory {
     private static final void chDir(String path) {
         File f = new File(path);
         if (f.exists() && f.isDirectory() && f.canRead()) {
-            InterpreterManagement.requestScilabExec("chdir('" + path + "')");
+            InterpreterManagement.requestScilabExec("chdir('" + path + "');");
         }
     }
 
index 45695bc..9810ba6 100644 (file)
@@ -91,13 +91,14 @@ public class SwingScilabTreeTable extends JTable {
 
     private SwingWorker dirRefresher;
     private ScilabFileBrowserModel model;
+    private boolean resetScrollBar = true;
 
     private Method isLocationInExpandControl;
 
     protected ScilabTreeTableCellRenderer tree;
     protected ScilabFileSelectorComboBox combobox;
     protected ScilabFileBrowserHistory history;
-
+    
     /**
      * Default Constructor
      * @param treeTableModel the tree table model
@@ -318,10 +319,12 @@ public class SwingScilabTreeTable extends JTable {
         if (model != null) {
             File f = new File(baseDir);
             if (cancelled || (f.exists() && f.isDirectory() && f.canRead())) {
+                boolean sameDir = baseDir.equals(model.getBaseDir());
                 tree.setModel(null);
-                if (addInHistory) {
+                if (!sameDir && addInHistory) {
                     history.addPathInHistory(baseDir);
                 }
+                resetScrollBar = !sameDir;
                 model.setBaseDir(baseDir, this);
             }
         }
@@ -348,7 +351,10 @@ public class SwingScilabTreeTable extends JTable {
         tree.setLargeModel(true);
         TreePath path = new TreePath(model.getRoot());
         tree.collapsePath(path);
-        ((JScrollPane) SwingUtilities.getAncestorOfClass(JScrollPane.class, this)).getVerticalScrollBar().setValue(0);
+        if (resetScrollBar) {
+            ((JScrollPane) SwingUtilities.getAncestorOfClass(JScrollPane.class, this)).getVerticalScrollBar().setValue(0);
+        }
+        resetScrollBar = true;
         tree.expandPath(path);
         if (getRowCount() >= 1) {
             repaint(tree.getRowBounds(0));