File browser strangeness on Mac M2 with Sonoma OS and ARM version 2024.0.0

Hello - Scilab runs super fast on my macbook pro with the new ARM version, but there is some strange behavior on the file browser window when it is docked

when i double click to navigate down nothing happens until I force the window to refresh with a resize.
Anyone else report this issue too ?
really happy though to see Scilab ported for the Apple silicon chips
J

Hello,

What do you mean here, please be more precise.

S.

Hope this thread is not dead.

I have the same problem with Intel MacBook Pro with Sonoma 14.7.1 (23H222) and Scilab 2024.1.0.

The problem is:
You cannot always change to a parent or child directory or select a file. You have to click in the path line at the top of the file browser or in the console for Scilab to update the browser display in that case. You can watch a brief screecast at https://www.hani-ibrahim.de/public/misc/scilab/scilab-fm-bug.mp4

It appeared in former versions, too (https://blog.hani-ibrahim.de/en/scilab-on-ventura-without-warnings.html#h5) But it just appears in macOS only. Not in Windows or GNU/Linux.

I also deleted my “scilab.ini” and even the whole “~/.Scilab” folder temporarily and I reinstalled Scilab w/o any toolboxes. But the problem persisted.

And it appears in 2024.0.0 and the current 2025.0.0, too. It does not appear in 2023.x.0. At the moment I use that version.

EDIT: I recently found out that it does not appear if you start Scilab on a new created user profile. Does Scilab stores any other configure files beside ~/.Scilab/?

Hello,

No. However, Access rights (to filesystem, Desktop,…) are requested by macOS at first Scilab launch and I presume that partially granting them could cause the problem.

S.

Thank you for your prompt help. That was also my first thought. So I gave Scilab full disk access in systems settings. Restart but the problem persists.

The version 2023.1.0 does not have full disk access but that problem does not appear in this version. 2024.x.0 and 2025.0.0 have the same problem, 2023.1.0 does not. And I gave 2024 & 2025 access to the requested folders at first startup. Weird.

But I agree it has something to do with my macOS profile settings. But I do not know where to look other than systems settings dialog.

With the user account where the problem shows, can you launch Scilab on the command line (open a terminal then type the following)

/Applications/scilab-2025.0.0.app/Contents/bin/scilab

then some message will probably issued when you click e.g. to go one level up and the browser does not update the current directory. In that case can you give the message ?

S.

… when you click e.g. to go one level up and the browser does not update the current directory. In that case can you give the message ?

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 4
	at org.scilab.modules.ui_data.filebrowser.ScilabFileBrowserModel.getColumnClass(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.ScilabTreeTableModelAdapter.getColumnClass(Unknown Source)
	at java.desktop/javax.swing.JTable.getColumnClass(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.SwingScilabTreeTable.getEditingRow(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.getAccessibleChild(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.getAccessibleAt(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.valueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.setSelectionInterval(Unknown Source)
	at java.desktop/javax.swing.JTable.changeSelectionModel(Unknown Source)
	at java.desktop/javax.swing.JTable.changeSelection(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mousePressed(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.Component.processEvent(Unknown Source)
	at java.desktop/java.awt.Container.processEvent(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 4
	at org.scilab.modules.ui_data.filebrowser.ScilabFileBrowserModel.getColumnClass(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.ScilabTreeTableModelAdapter.getColumnClass(Unknown Source)
	at java.desktop/javax.swing.JTable.getColumnClass(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.SwingScilabTreeTable.getEditingRow(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.getAccessibleChild(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.getAccessibleAt(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.valueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.setValueIsAdjusting(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mouseReleased(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.Component.processEvent(Unknown Source)
	at java.desktop/java.awt.Container.processEvent(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 4
	at org.scilab.modules.ui_data.filebrowser.ScilabFileBrowserModel.getColumnClass(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.ScilabTreeTableModelAdapter.getColumnClass(Unknown Source)
	at java.desktop/javax.swing.JTable.getColumnClass(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.SwingScilabTreeTable.getEditingRow(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.getAccessibleChild(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.getAccessibleAt(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.valueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.clearSelection(Unknown Source)
	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.resetRowSelection(Unknown Source)
	at java.desktop/javax.swing.tree.FixedHeightLayoutCache$FHTreeStateNode.expand(Unknown Source)
	at java.desktop/javax.swing.tree.FixedHeightLayoutCache.rebuild(Unknown Source)
	at java.desktop/javax.swing.tree.FixedHeightLayoutCache.setModel(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTreeUI.setModel(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.propertyChange(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTreeUI$PropertyChangeHandler.propertyChange(Unknown Source)
	at java.desktop/com.apple.laf.AquaTreeUI$MacPropertyChangeHandler.propertyChange(Unknown Source)
	at java.desktop/java.beans.PropertyChangeSupport.fire(Unknown Source)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
	at java.desktop/java.awt.Component.firePropertyChange(Unknown Source)
	at java.desktop/javax.swing.JTree.setModel(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.SwingScilabTreeTable.reload(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.ScilabFileBrowserModel$1.done(Unknown Source)
	at java.desktop/javax.swing.SwingWorker$5.run(Unknown Source)
	at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source)
	at java.desktop/sun.swing.AccumulativeRunnable.run(Unknown Source)
	at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source)
	at java.desktop/javax.swing.Timer.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.Timer$DoPostEvent.run(Unknown Source)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 4
	at org.scilab.modules.ui_data.filebrowser.ScilabFileBrowserModel.getColumnClass(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.ScilabTreeTableModelAdapter.getColumnClass(Unknown Source)
	at java.desktop/javax.swing.JTable.getColumnClass(Unknown Source)
	at org.scilab.modules.ui_data.filebrowser.SwingScilabTreeTable.getEditingRow(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.getAccessibleChild(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.getAccessibleAt(Unknown Source)
	at java.desktop/javax.swing.JTable$AccessibleJTable.valueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultListSelectionModel.setValueIsAdjusting(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mouseReleased(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.Component.processEvent(Unknown Source)
	at java.desktop/java.awt.Container.processEvent(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

The problem is due to the presence of a space in one directory of the path. I have created an issue:

S.

1 Like