diff --git a/src/main/scala/ocelot/desktop/OcelotDesktop.scala b/src/main/scala/ocelot/desktop/OcelotDesktop.scala index 255f077..0bb9a6f 100644 --- a/src/main/scala/ocelot/desktop/OcelotDesktop.scala +++ b/src/main/scala/ocelot/desktop/OcelotDesktop.scala @@ -404,13 +404,16 @@ object OcelotDesktop val selectedFile = Option.when(chooser.showDialog(null, null) == JFileChooser.APPROVE_OPTION)(chooser.getSelectedFile) - val result = f(selectedFile) - - result match { - case f @ Failure(_) => showFailureMessage(f) - case Success(_) => - } + // users of [showFileChooserDialog] expect that the continuation is run on the main thread. + // let's meet this expectation. + UiHandler.UiThreadTasks.add(() => { + val result = f(selectedFile) + result match { + case f@Failure(_) => showFailureMessage(f) + case Success(_) => + } + }) }).start() }