From b294aee91e783e1cf12d8a32b8e2a00192819f81 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Tue, 11 Jun 2019 21:43:23 +0300 Subject: [PATCH] (75834911e) Fixed crash after opening OpenFileDialog more than once on Linux --- .../Source/Utils/OpenFileDialog.cs | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/Utils/OpenFileDialog.cs b/Barotrauma/BarotraumaClient/Source/Utils/OpenFileDialog.cs index b7e5dba5c..54257c19a 100644 --- a/Barotrauma/BarotraumaClient/Source/Utils/OpenFileDialog.cs +++ b/Barotrauma/BarotraumaClient/Source/Utils/OpenFileDialog.cs @@ -18,34 +18,33 @@ namespace Barotrauma public string FileName { get; private set; } public string[] FileNames { get; private set; } - public OpenFileDialog() - { - ofd = new System.Windows.Forms.OpenFileDialog(); - } + public OpenFileDialog() { } public System.Windows.Forms.DialogResult ShowDialog() { + ofd = new System.Windows.Forms.OpenFileDialog(); ofd.Multiselect = Multiselect; ofd.InitialDirectory = InitialDirectory; ofd.Filter = Filter; ofd.Title = Title; -#if LINUX + System.Windows.Forms.DialogResult result; +#if LINUX || OSX var wrapperForm = new WrapperForm(ofd); System.Windows.Forms.Application.Run(wrapperForm); - System.Windows.Forms.Application.Exit(); FileName = wrapperForm.FileName; FileNames = wrapperForm.FileNames; - return wrapperForm.Result; + result = wrapperForm.Result; #else - var result = ofd.ShowDialog(); + result = ofd.ShowDialog(); FileName = ofd.FileName; FileNames = ofd.FileNames; - return result; #endif + ofd = null; + return result; } -#if LINUX +#if LINUX || OSX private class WrapperForm : System.Windows.Forms.Form { private System.Windows.Forms.OpenFileDialog ofd; @@ -66,7 +65,7 @@ namespace Barotrauma FileName = ofd.FileName; FileNames = ofd.FileNames; System.Threading.Thread.Sleep(100); - this.Close(); + System.Windows.Forms.Application.Exit(); } } #endif