diff --git a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
index e0a2f31896..f995266b6c 100644
--- a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
+++ b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
@@ -27,7 +27,7 @@ namespace ICSharpCode.SharpDevelop.Gui
///
/// Workbench implementation using WPF and AvalonDock.
///
- sealed partial class WpfWorkbench : Window, IWorkbench
+ sealed partial class WpfWorkbench : Window, IWorkbench, System.Windows.Forms.IWin32Window
{
const string mainMenuPath = "/SharpDevelop/Workbench/MainMenu";
const string viewContentPath = "/SharpDevelop/Workbench/Pads";
@@ -53,10 +53,20 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
- public System.Windows.Forms.IWin32Window MainWin32Window { get; private set; }
+ public System.Windows.Forms.IWin32Window MainWin32Window { get { return this; } }
public ISynchronizeInvoke SynchronizingObject { get; private set; }
public Window MainWindow { get { return this; } }
+ IntPtr System.Windows.Forms.IWin32Window.Handle {
+ get {
+ var wnd = System.Windows.PresentationSource.FromVisual(this) as System.Windows.Interop.IWin32Window;
+ if (wnd != null)
+ return wnd.Handle;
+ else
+ return IntPtr.Zero;
+ }
+ }
+
List padDescriptorCollection = new List();
ToolBar[] toolBars;
@@ -70,7 +80,6 @@ namespace ICSharpCode.SharpDevelop.Gui
protected override void OnSourceInitialized(EventArgs e)
{
- this.MainWin32Window = this.GetWin32Window();
base.OnSourceInitialized(e);
HwndSource.FromHwnd(this.MainWin32Window.Handle).AddHook(SingleInstanceHelper.WndProc);
}
diff --git a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
index c4bc4e8ed1..37b18f926a 100644
--- a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
+++ b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
@@ -86,6 +86,7 @@ namespace ICSharpCode.SharpDevelop.Gui
var messageService = (WinFormsMessageService)Core.Services.ServiceManager.Instance.MessageService;
messageService.DialogOwner = workbench.MainWin32Window;
+ Debug.Assert(messageService.DialogOwner != null);
messageService.DialogSynchronizeInvoke = workbench.SynchronizingObject;
workbench.Initialize();
diff --git a/src/Main/Base/Project/Src/Util/ExtensionMethods.cs b/src/Main/Base/Project/Src/Util/ExtensionMethods.cs
index e2721c6e94..b7272307d5 100644
--- a/src/Main/Base/Project/Src/Util/ExtensionMethods.cs
+++ b/src/Main/Base/Project/Src/Util/ExtensionMethods.cs
@@ -134,32 +134,6 @@ namespace ICSharpCode.SharpDevelop
return result;
}
- ///
- /// Gets the IWin32Window associated with a WPF window.
- ///
- public static WinForms.IWin32Window GetWin32Window(this System.Windows.Window window)
- {
- var wnd = System.Windows.PresentationSource.FromVisual(window) as System.Windows.Interop.IWin32Window;
- if (wnd != null)
- return new Win32WindowAdapter(wnd);
- else
- return null;
- }
-
- sealed class Win32WindowAdapter : WinForms.IWin32Window
- {
- readonly System.Windows.Interop.IWin32Window window;
-
- public Win32WindowAdapter(System.Windows.Interop.IWin32Window window)
- {
- this.window = window;
- }
-
- public IntPtr Handle {
- get { return window.Handle; }
- }
- }
-
///
/// Sets the Content property of the specified ControlControl to the specified content.
/// If the content is a Windows-Forms control, it is wrapped in a WindowsFormsHost.