|
|
@@ -5,7 +5,6 @@ using System.Threading.Tasks;
|
|
|
using Avalonia.Controls;
|
|
|
using Avalonia.Controls.Platform;
|
|
|
using Avalonia.Native.Interop;
|
|
|
-using Avalonia.Platform;
|
|
|
|
|
|
namespace Avalonia.Native
|
|
|
{
|
|
|
@@ -18,13 +17,15 @@ namespace Avalonia.Native
|
|
|
_native = native;
|
|
|
}
|
|
|
|
|
|
- public Task<string[]> ShowFileDialogAsync(FileDialog dialog, IWindowImpl parent)
|
|
|
+ public Task<string[]> ShowFileDialogAsync(FileDialog dialog, Window parent)
|
|
|
{
|
|
|
var events = new SystemDialogEvents();
|
|
|
|
|
|
+ var nativeParent = GetNativeWindow(parent);
|
|
|
+
|
|
|
if (dialog is OpenFileDialog ofd)
|
|
|
{
|
|
|
- _native.OpenFileDialog((parent as WindowImpl)?.Native,
|
|
|
+ _native.OpenFileDialog(nativeParent,
|
|
|
events, ofd.AllowMultiple,
|
|
|
ofd.Title ?? "",
|
|
|
ofd.InitialDirectory ?? "",
|
|
|
@@ -33,7 +34,7 @@ namespace Avalonia.Native
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- _native.SaveFileDialog((parent as WindowImpl)?.Native,
|
|
|
+ _native.SaveFileDialog(nativeParent,
|
|
|
events,
|
|
|
dialog.Title ?? "",
|
|
|
dialog.InitialDirectory ?? "",
|
|
|
@@ -44,14 +45,21 @@ namespace Avalonia.Native
|
|
|
return events.Task.ContinueWith(t => { events.Dispose(); return t.Result; });
|
|
|
}
|
|
|
|
|
|
- public Task<string> ShowFolderDialogAsync(OpenFolderDialog dialog, IWindowImpl parent)
|
|
|
+ public Task<string> ShowFolderDialogAsync(OpenFolderDialog dialog, Window parent)
|
|
|
{
|
|
|
var events = new SystemDialogEvents();
|
|
|
|
|
|
- _native.SelectFolderDialog((parent as WindowImpl)?.Native, events, dialog.Title ?? "", dialog.InitialDirectory ?? "");
|
|
|
+ var nativeParent = GetNativeWindow(parent);
|
|
|
+
|
|
|
+ _native.SelectFolderDialog(nativeParent, events, dialog.Title ?? "", dialog.InitialDirectory ?? "");
|
|
|
|
|
|
return events.Task.ContinueWith(t => { events.Dispose(); return t.Result.FirstOrDefault(); });
|
|
|
}
|
|
|
+
|
|
|
+ private IAvnWindow GetNativeWindow(Window window)
|
|
|
+ {
|
|
|
+ return (window?.PlatformImpl as WindowImpl)?.Native;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public class SystemDialogEvents : CallbackBase, IAvnSystemDialogEvents
|