Browse Source

Fixed NullReferenceExceptions when Clipboard.GetData returns null.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3359 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
f60b4cbb8f
  1. 2
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs
  2. 10
      src/AddIns/Misc/StartPage/Project/Src/StartPage.cs
  3. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaClipboardHandler.cs
  4. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  5. 10
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs
  6. 6
      src/Main/ICSharpCode.Core.WinForms/Util/ClipboardWrapper.cs

2
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs

@ -169,6 +169,8 @@ namespace ResourceEditor @@ -169,6 +169,8 @@ namespace ResourceEditor
}
IDataObject dob = ClipboardWrapper.GetDataObject();
if (dob == null)
return;
if (dob.GetDataPresent(typeof(Hashtable).FullName)) {
Hashtable tmphash = (Hashtable)dob.GetData(typeof(Hashtable));

10
src/AddIns/Misc/StartPage/Project/Src/StartPage.cs

@ -53,9 +53,13 @@ namespace ICSharpCode.StartPage @@ -53,9 +53,13 @@ namespace ICSharpCode.StartPage
void pane_WebBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
WebBrowser webBrowser = (WebBrowser)sender;
webBrowser.Navigating -= pane_WebBrowser_Navigating;
webBrowser.Navigated -= pane_WebBrowser_Navigated;
try {
WebBrowser webBrowser = (WebBrowser)sender;
webBrowser.Navigating -= pane_WebBrowser_Navigating;
webBrowser.Navigated -= pane_WebBrowser_Navigated;
} catch (Exception ex) {
MessageService.ShowError(ex);
}
}
void pane_WebBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaClipboardHandler.cs

@ -174,6 +174,8 @@ namespace ICSharpCode.TextEditor @@ -174,6 +174,8 @@ namespace ICSharpCode.TextEditor
for (int i = 0;; i++) {
try {
IDataObject data = Clipboard.GetDataObject();
if (data == null)
return;
bool fullLine = data.GetDataPresent(LineSelectedType);
if (data.GetDataPresent(DataFormats.UnicodeText)) {
string text = (string)data.GetData(DataFormats.UnicodeText);

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

@ -560,6 +560,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -560,6 +560,8 @@ namespace ICSharpCode.SharpDevelop.Project
public override void Paste()
{
IDataObject dataObject = ClipboardWrapper.GetDataObject();
if (dataObject == null)
return;
if (dataObject.GetDataPresent(DataFormats.FileDrop)) {
string[] files = (string[])dataObject.GetData(DataFormats.FileDrop);

10
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs

@ -150,7 +150,11 @@ namespace ICSharpCode.SharpDevelop.Project @@ -150,7 +150,11 @@ namespace ICSharpCode.SharpDevelop.Project
public static bool DoEnablePaste(ISolutionFolderNode container)
{
IDataObject dataObject = ClipboardWrapper.GetDataObject();
return DoEnablePaste(container, ClipboardWrapper.GetDataObject());
}
static bool DoEnablePaste(ISolutionFolderNode container, IDataObject dataObject)
{
if (dataObject == null) {
return false;
}
@ -171,13 +175,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -171,13 +175,13 @@ namespace ICSharpCode.SharpDevelop.Project
public static void DoPaste(ISolutionFolderNode folderNode)
{
if (!DoEnablePaste(folderNode)) {
IDataObject dataObject = ClipboardWrapper.GetDataObject();
if (!DoEnablePaste(folderNode, dataObject)) {
LoggingService.Warn("SolutionFolderNode.DoPaste: Pasting was not enabled.");
return;
}
ExtTreeNode folderTreeNode = (ExtTreeNode)folderNode;
IDataObject dataObject = ClipboardWrapper.GetDataObject();
if (dataObject.GetDataPresent(typeof(ISolutionFolder).ToString())) {
string guid = dataObject.GetData(typeof(ISolutionFolder).ToString()).ToString();

6
src/Main/ICSharpCode.Core.WinForms/Util/ClipboardWrapper.cs

@ -43,6 +43,10 @@ namespace ICSharpCode.Core.WinForms @@ -43,6 +43,10 @@ namespace ICSharpCode.Core.WinForms
SetDataObject(data);
}
/// <summary>
/// Gets the current clipboard content.
/// Can return null!
/// </summary>
public static IDataObject GetDataObject()
{
// retry 2 times should be enough for read access
@ -52,7 +56,7 @@ namespace ICSharpCode.Core.WinForms @@ -52,7 +56,7 @@ namespace ICSharpCode.Core.WinForms
try {
return Clipboard.GetDataObject();
} catch (ExternalException) {
return new DataObject();
return null;
}
}
}

Loading…
Cancel
Save