From 3f65739bd460abf34956fec93db586577d8238b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Tr=E1=BB=8Dng=20Gi=C3=A1p?= Date: Wed, 9 Oct 2019 17:46:41 +0700 Subject: [PATCH] fix bug set property for FileDialog and FolderBrowserDialog --- src/Ookii.Dialogs.Wpf/VistaFileDialog.cs | 25 ++++++------------- .../VistaFolderBrowserDialog.cs | 19 ++++---------- 2 files changed, 12 insertions(+), 32 deletions(-) diff --git a/src/Ookii.Dialogs.Wpf/VistaFileDialog.cs b/src/Ookii.Dialogs.Wpf/VistaFileDialog.cs index 4524995..a8ae409 100644 --- a/src/Ookii.Dialogs.Wpf/VistaFileDialog.cs +++ b/src/Ookii.Dialogs.Wpf/VistaFileDialog.cs @@ -608,17 +608,13 @@ internal virtual void SetDialogProperties(Ookii.Dialogs.Wpf.Interop.IFileDialog // Set the default file name if( !(_fileNames == null || _fileNames.Length == 0 || string.IsNullOrEmpty(_fileNames[0])) ) { - string parent = Path.GetDirectoryName(_fileNames[0]); - if( parent == null || !Directory.Exists(parent) ) - { - dialog.SetFileName(_fileNames[0]); - } - else - { - string folder = Path.GetFileName(_fileNames[0]); - dialog.SetFolder(NativeMethods.CreateItemFromParsingName(parent)); - dialog.SetFileName(folder); - } + dialog.SetFileName(_fileNames[0]); + } + + // Set the default directory + if( Directory.Exists(_initialDirectory) ) + { + dialog.SetFolder(NativeMethods.CreateItemFromParsingName(_initialDirectory)); } // Set the filter @@ -643,13 +639,6 @@ internal virtual void SetDialogProperties(Ookii.Dialogs.Wpf.Interop.IFileDialog dialog.SetDefaultExtension(_defaultExt); } - // Initial directory - if( !string.IsNullOrEmpty(_initialDirectory) ) - { - Ookii.Dialogs.Wpf.Interop.IShellItem item = NativeMethods.CreateItemFromParsingName(_initialDirectory); - dialog.SetDefaultFolder(item); - } - if( !string.IsNullOrEmpty(_title) ) { dialog.SetTitle(_title); diff --git a/src/Ookii.Dialogs.Wpf/VistaFolderBrowserDialog.cs b/src/Ookii.Dialogs.Wpf/VistaFolderBrowserDialog.cs index 5572d3a..fd5e4bd 100644 --- a/src/Ookii.Dialogs.Wpf/VistaFolderBrowserDialog.cs +++ b/src/Ookii.Dialogs.Wpf/VistaFolderBrowserDialog.cs @@ -250,22 +250,13 @@ private void SetDialogProperties(Ookii.Dialogs.Wpf.Interop.IFileDialog dialog) } } - dialog.SetOptions(NativeMethods.FOS.FOS_PICKFOLDERS | NativeMethods.FOS.FOS_FORCEFILESYSTEM | NativeMethods.FOS.FOS_FILEMUSTEXIST); - - if( !string.IsNullOrEmpty(_selectedPath) ) + // Set the default directory + if (Directory.Exists(_selectedPath)) { - string parent = Path.GetDirectoryName(_selectedPath); - if( parent == null || !Directory.Exists(parent) ) - { - dialog.SetFileName(_selectedPath); - } - else - { - string folder = Path.GetFileName(_selectedPath); - dialog.SetFolder(NativeMethods.CreateItemFromParsingName(parent)); - dialog.SetFileName(folder); - } + dialog.SetFolder(NativeMethods.CreateItemFromParsingName(_selectedPath)); } + + dialog.SetOptions(NativeMethods.FOS.FOS_PICKFOLDERS | NativeMethods.FOS.FOS_FORCEFILESYSTEM | NativeMethods.FOS.FOS_FILEMUSTEXIST); } private void GetResult(Ookii.Dialogs.Wpf.Interop.IFileDialog dialog)