Browse Source

Handle COMException when dragging files from Thunderbird to SharpDevelop (http://community.sharpdevelop.net/forums/t/12271.aspx).

pull/14/head
Daniel Grunwald 15 years ago
parent
commit
597309b10d
  1. 14
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  2. 15
      src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs

14
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs

@ -828,13 +828,15 @@ namespace ICSharpCode.SharpDevelop.Project @@ -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);
}
}
}

15
src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs

@ -8,6 +8,7 @@ using System.Diagnostics; @@ -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 @@ -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;
}

Loading…
Cancel
Save