Browse Source

Replace use of InitialDirectory in file dialogs.

pull/3904/head
Steven Kirk 6 years ago
parent
commit
af12a3e9cc
  1. 2
      src/Avalonia.Dialogs/ManagedFileChooserViewModel.cs
  2. 6
      src/Avalonia.Native/SystemDialogs.cs
  3. 4
      src/Avalonia.X11/NativeDialogs/GtkNativeFileDialogs.cs
  4. 12
      src/Windows/Avalonia.Win32/SystemDialogImpl.cs

2
src/Avalonia.Dialogs/ManagedFileChooserViewModel.cs

@ -136,7 +136,7 @@ namespace Avalonia.Dialogs
: dialog is OpenFolderDialog ? "Select directory"
: throw new ArgumentException(nameof(dialog)));
var directory = dialog.InitialDirectory;
var directory = dialog.Directory;
if (directory == null || !Directory.Exists(directory))
{

6
src/Avalonia.Native/SystemDialogs.cs

@ -28,7 +28,7 @@ namespace Avalonia.Native
_native.OpenFileDialog(nativeParent,
events, ofd.AllowMultiple,
ofd.Title ?? "",
ofd.InitialDirectory ?? "",
ofd.Directory ?? "",
ofd.InitialFileName ?? "",
string.Join(";", dialog.Filters.SelectMany(f => f.Extensions)));
}
@ -37,7 +37,7 @@ namespace Avalonia.Native
_native.SaveFileDialog(nativeParent,
events,
dialog.Title ?? "",
dialog.InitialDirectory ?? "",
dialog.Directory ?? "",
dialog.InitialFileName ?? "",
string.Join(";", dialog.Filters.SelectMany(f => f.Extensions)));
}
@ -51,7 +51,7 @@ namespace Avalonia.Native
var nativeParent = GetNativeWindow(parent);
_native.SelectFolderDialog(nativeParent, events, dialog.Title ?? "", dialog.InitialDirectory ?? "");
_native.SelectFolderDialog(nativeParent, events, dialog.Title ?? "", dialog.Directory ?? "");
return events.Task.ContinueWith(t => { events.Dispose(); return t.Result.FirstOrDefault(); });
}

4
src/Avalonia.X11/NativeDialogs/GtkNativeFileDialogs.cs

@ -112,7 +112,7 @@ namespace Avalonia.X11.NativeDialogs
() => ShowDialog(dialog.Title, platformImpl,
dialog is OpenFileDialog ? GtkFileChooserAction.Open : GtkFileChooserAction.Save,
(dialog as OpenFileDialog)?.AllowMultiple ?? false,
Path.Combine(string.IsNullOrEmpty(dialog.InitialDirectory) ? "" : dialog.InitialDirectory,
Path.Combine(string.IsNullOrEmpty(dialog.Directory) ? "" : dialog.Directory,
string.IsNullOrEmpty(dialog.InitialFileName) ? "" : dialog.InitialFileName), dialog.Filters));
}
@ -125,7 +125,7 @@ namespace Avalonia.X11.NativeDialogs
return await await RunOnGlibThread(async () =>
{
var res = await ShowDialog(dialog.Title, platformImpl,
GtkFileChooserAction.SelectFolder, false, dialog.InitialDirectory, null);
GtkFileChooserAction.SelectFolder, false, dialog.Directory, null);
return res?.FirstOrDefault();
});
}

12
src/Windows/Avalonia.Win32/SystemDialogImpl.cs

@ -56,11 +56,11 @@ namespace Avalonia.Win32
frm.SetFileTypes((uint)filters.Count, filters.ToArray());
frm.SetFileTypeIndex(0);
if (dialog.InitialDirectory != null)
if (dialog.Directory != null)
{
UnmanagedMethods.IShellItem directoryShellItem;
Guid riid = UnmanagedMethods.ShellIds.IShellItem;
if (UnmanagedMethods.SHCreateItemFromParsingName(dialog.InitialDirectory, IntPtr.Zero, ref riid, out directoryShellItem) == (uint)UnmanagedMethods.HRESULT.S_OK)
if (UnmanagedMethods.SHCreateItemFromParsingName(dialog.Directory, IntPtr.Zero, ref riid, out directoryShellItem) == (uint)UnmanagedMethods.HRESULT.S_OK)
{
frm.SetFolder(directoryShellItem);
frm.SetDefaultFolder(directoryShellItem);
@ -114,21 +114,21 @@ namespace Avalonia.Win32
options |= (uint)(UnmanagedMethods.FOS.FOS_PICKFOLDERS | DefaultDialogOptions);
frm.SetOptions(options);
if (dialog.InitialDirectory != null)
if (dialog.Directory != null)
{
UnmanagedMethods.IShellItem directoryShellItem;
Guid riid = UnmanagedMethods.ShellIds.IShellItem;
if (UnmanagedMethods.SHCreateItemFromParsingName(dialog.InitialDirectory, IntPtr.Zero, ref riid, out directoryShellItem) == (uint)UnmanagedMethods.HRESULT.S_OK)
if (UnmanagedMethods.SHCreateItemFromParsingName(dialog.Directory, IntPtr.Zero, ref riid, out directoryShellItem) == (uint)UnmanagedMethods.HRESULT.S_OK)
{
frm.SetFolder(directoryShellItem);
}
}
if (dialog.DefaultDirectory != null)
if (dialog.Directory != null)
{
UnmanagedMethods.IShellItem directoryShellItem;
Guid riid = UnmanagedMethods.ShellIds.IShellItem;
if (UnmanagedMethods.SHCreateItemFromParsingName(dialog.DefaultDirectory, IntPtr.Zero, ref riid, out directoryShellItem) == (uint)UnmanagedMethods.HRESULT.S_OK)
if (UnmanagedMethods.SHCreateItemFromParsingName(dialog.Directory, IntPtr.Zero, ref riid, out directoryShellItem) == (uint)UnmanagedMethods.HRESULT.S_OK)
{
frm.SetDefaultFolder(directoryShellItem);
}

Loading…
Cancel
Save