(b63c9bf0c) Fixed OpenFileDialog not closing on Linux
This commit is contained in:
@@ -223,6 +223,7 @@
|
|||||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\Utils\MathUtils.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\Utils\MathUtils.cs" />
|
||||||
|
<Compile Include="$(MSBuildThisFileDirectory)Source\Utils\OpenFileDialog.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\Utils\TextureLoader.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\Utils\TextureLoader.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\Utils\ToolBox.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\Utils\ToolBox.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -967,7 +967,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
OpenFileDialog ofd = new OpenFileDialog()
|
Barotrauma.OpenFileDialog ofd = new Barotrauma.OpenFileDialog()
|
||||||
{
|
{
|
||||||
Multiselect = true,
|
Multiselect = true,
|
||||||
InitialDirectory = Path.GetFullPath(SteamManager.WorkshopItemStagingFolder),
|
InitialDirectory = Path.GetFullPath(SteamManager.WorkshopItemStagingFolder),
|
||||||
@@ -1078,7 +1078,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
OpenFileDialog ofd = new OpenFileDialog()
|
Barotrauma.OpenFileDialog ofd = new Barotrauma.OpenFileDialog()
|
||||||
{
|
{
|
||||||
InitialDirectory = Path.GetFullPath(SteamManager.WorkshopItemStagingFolder),
|
InitialDirectory = Path.GetFullPath(SteamManager.WorkshopItemStagingFolder),
|
||||||
Title = TextManager.Get("workshopitemaddfiles"),
|
Title = TextManager.Get("workshopitemaddfiles"),
|
||||||
|
|||||||
@@ -1074,7 +1074,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
OnClicked = (btn, userdata) =>
|
OnClicked = (btn, userdata) =>
|
||||||
{
|
{
|
||||||
OpenFileDialog ofd = new OpenFileDialog()
|
Barotrauma.OpenFileDialog ofd = new Barotrauma.OpenFileDialog()
|
||||||
{
|
{
|
||||||
InitialDirectory = Path.GetFullPath(Submarine.SavePath),
|
InitialDirectory = Path.GetFullPath(Submarine.SavePath),
|
||||||
Filter = "PNG file|*.png",
|
Filter = "PNG file|*.png",
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Barotrauma
|
||||||
|
{
|
||||||
|
public class OpenFileDialog
|
||||||
|
{
|
||||||
|
private System.Windows.Forms.OpenFileDialog ofd;
|
||||||
|
|
||||||
|
public bool Multiselect;
|
||||||
|
public string InitialDirectory;
|
||||||
|
public string Filter;
|
||||||
|
public string Title;
|
||||||
|
public string FileName { get; private set; }
|
||||||
|
public string[] FileNames { get; private set; }
|
||||||
|
|
||||||
|
public OpenFileDialog()
|
||||||
|
{
|
||||||
|
ofd = new System.Windows.Forms.OpenFileDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Windows.Forms.DialogResult ShowDialog()
|
||||||
|
{
|
||||||
|
ofd.Multiselect = Multiselect;
|
||||||
|
ofd.InitialDirectory = InitialDirectory;
|
||||||
|
ofd.Filter = Filter;
|
||||||
|
ofd.Title = Title;
|
||||||
|
|
||||||
|
#if LINUX
|
||||||
|
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;
|
||||||
|
#else
|
||||||
|
var result = ofd.ShowDialog();
|
||||||
|
FileName = ofd.FileName;
|
||||||
|
FileNames = ofd.FileNames;
|
||||||
|
return result;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#if LINUX
|
||||||
|
private class WrapperForm : System.Windows.Forms.Form
|
||||||
|
{
|
||||||
|
private System.Windows.Forms.OpenFileDialog ofd;
|
||||||
|
|
||||||
|
public System.Windows.Forms.DialogResult Result { get; private set; }
|
||||||
|
public string FileName { get; private set; }
|
||||||
|
public string[] FileNames { get; private set; }
|
||||||
|
|
||||||
|
public WrapperForm(System.Windows.Forms.OpenFileDialog dialog)
|
||||||
|
{
|
||||||
|
ofd = dialog;
|
||||||
|
Load += WrapperForm_Load;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WrapperForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Result = ofd.ShowDialog();
|
||||||
|
FileName = ofd.FileName;
|
||||||
|
FileNames = ofd.FileNames;
|
||||||
|
System.Threading.Thread.Sleep(100);
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-1
@@ -122,8 +122,9 @@ namespace Barotrauma
|
|||||||
goToObjective = null;
|
goToObjective = null;
|
||||||
}
|
}
|
||||||
TryAddSubObjective(ref goToObjective,
|
TryAddSubObjective(ref goToObjective,
|
||||||
constructor: () => new AIObjectiveGoTo(currentSafeHull, character, objectiveManager, getDivingGearIfNeeded: true)
|
constructor: () => new AIObjectiveGoTo(currentSafeHull, character, objectiveManager, getDivingGearIfNeeded: false)
|
||||||
{
|
{
|
||||||
|
// If we need diving gear, we should already have it, if possible.
|
||||||
AllowGoingOutside = HumanAIController.HasDivingSuit(character)
|
AllowGoingOutside = HumanAIController.HasDivingSuit(character)
|
||||||
},
|
},
|
||||||
onAbandon: () => unreachable.Add(goToObjective.Target as Hull));
|
onAbandon: () => unreachable.Add(goToObjective.Target as Hull));
|
||||||
|
|||||||
Reference in New Issue
Block a user