diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs index 796a295c9b..b73f96d4cd 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs @@ -828,13 +828,15 @@ namespace ICSharpCode.SharpDevelop.Project CopyDirectoryHere(directoryNode, effect == DragDropEffects.Move); } else if (dataObject.GetDataPresent(DataFormats.FileDrop)) { string[] files = (string[])dataObject.GetData(DataFormats.FileDrop); - foreach (string fileName in files) { - if (System.IO.Directory.Exists(fileName)) { - if (!FileUtility.IsBaseDirectory(fileName, Directory)) { - CopyDirectoryHere(fileName, false); + if (files != null) { + foreach (string fileName in files) { + if (System.IO.Directory.Exists(fileName)) { + if (!FileUtility.IsBaseDirectory(fileName, Directory)) { + CopyDirectoryHere(fileName, false); + } + } else { + CopyFileHere(fileName, false); } - } else { - CopyFileHere(fileName, false); } } } diff --git a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs index 123396b869..2a706e7a1c 100644 --- a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs +++ b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs @@ -8,6 +8,7 @@ using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; +using System.Runtime.InteropServices; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; @@ -609,13 +610,17 @@ namespace ICSharpCode.SharpDevelop.Gui DragDropEffects GetEffect(IDataObject data) { - if (data != null && data.GetDataPresent(DataFormats.FileDrop)) { - string[] files = (string[])data.GetData(DataFormats.FileDrop); - foreach (string file in files) { - if (File.Exists(file)) { - return DragDropEffects.Link; + try { + if (data != null && data.GetDataPresent(DataFormats.FileDrop)) { + string[] files = (string[])data.GetData(DataFormats.FileDrop); + foreach (string file in files) { + if (File.Exists(file)) { + return DragDropEffects.Link; + } } } + } catch (COMException) { + // Ignore errors getting the data (e.g. happens when dragging attachments out of Thunderbird) } return DragDropEffects.None; }