diff --git a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs index 82470dbb9f0..93f245457bc 100644 --- a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs +++ b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs @@ -57,7 +57,7 @@ public static class WorkbenchSingleton } } - public static IStatusBarService StatusBar { + public static IStatusBarService StatusBar { get { return workbench != null ? workbench.StatusBar : null; } @@ -77,10 +77,12 @@ public static void InitializeWorkbench(IWorkbench workbench, IWorkbenchLayout la Project.CustomToolsService.Initialize(); Project.BuildModifiedProjectsOnlyService.Initialize(); - var messageService = (WinFormsMessageService)Core.Services.ServiceManager.Instance.MessageService; - messageService.DialogOwner = workbench.MainWin32Window; - Debug.Assert(messageService.DialogOwner != null); - messageService.DialogSynchronizeInvoke = workbench.SynchronizingObject; + var messageService = Core.Services.ServiceManager.Instance.MessageService as IDialogMessageService; + if (messageService != null) { + messageService.DialogOwner = workbench.MainWin32Window; + Debug.Assert(messageService.DialogOwner != null); + messageService.DialogSynchronizeInvoke = workbench.SynchronizingObject; + } workbench.Initialize(); workbench.SetMemento(PropertyService.Get(workbenchMemento, new Properties())); diff --git a/src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj b/src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj index 11cbbce1a9c..bc4adb189bf 100644 --- a/src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj +++ b/src/Main/ICSharpCode.Core.WinForms/ICSharpCode.Core.WinForms.csproj @@ -59,6 +59,7 @@ + diff --git a/src/Main/ICSharpCode.Core.WinForms/MessageService/IDialogMessageService.cs b/src/Main/ICSharpCode.Core.WinForms/MessageService/IDialogMessageService.cs new file mode 100644 index 00000000000..83d83085787 --- /dev/null +++ b/src/Main/ICSharpCode.Core.WinForms/MessageService/IDialogMessageService.cs @@ -0,0 +1,24 @@ +// +// +// +// +// $Revision$ +// + +using System; +using System.ComponentModel; +using System.Windows.Forms; + +using ICSharpCode.Core.Services; + +namespace ICSharpCode.Core.WinForms +{ + /// + /// Message service that sets an owner for dialog boxes. + /// + public interface IDialogMessageService : IMessageService + { + IWin32Window DialogOwner { set; get; } + ISynchronizeInvoke DialogSynchronizeInvoke { set; get; } + } +} diff --git a/src/Main/ICSharpCode.Core.WinForms/MessageService/WinFormsMessageService.cs b/src/Main/ICSharpCode.Core.WinForms/MessageService/WinFormsMessageService.cs index 888b0030f02..6809f7a0e77 100644 --- a/src/Main/ICSharpCode.Core.WinForms/MessageService/WinFormsMessageService.cs +++ b/src/Main/ICSharpCode.Core.WinForms/MessageService/WinFormsMessageService.cs @@ -18,7 +18,7 @@ namespace ICSharpCode.Core.WinForms /// All text displayed using the MessageService is passed to the /// to replace ${res} markers. /// - public class WinFormsMessageService : IMessageService + public class WinFormsMessageService : IDialogMessageService { /// /// Gets/Sets the form used as owner for shown message boxes.