diff options
author | Lluis Sanchez Gual <lluis@xamarin.com> | 2015-04-16 21:17:50 +0300 |
---|---|---|
committer | Lluis Sanchez Gual <lluis@xamarin.com> | 2015-04-16 21:17:50 +0300 |
commit | 139b6566030af3106a28286e747b38ea45b1a428 (patch) | |
tree | 19f5fe55d10505691814916bc88dccecfef30a11 | |
parent | 06c3d9a60346f4313986c1b50de3f0786df65da9 (diff) |
Remove unnecessary use of GuiDispatch
Most of event subscriptions don't need to be wrapped with a GuiDispatch
generated delegate wrapper since the events are already dispatched in the
UI thread.
53 files changed, 263 insertions, 454 deletions
diff --git a/main/src/addins/CBinding/Navigation/ProjectNodeBuilderExtension.cs b/main/src/addins/CBinding/Navigation/ProjectNodeBuilderExtension.cs index 0022146b60..dec8bf20ee 100644 --- a/main/src/addins/CBinding/Navigation/ProjectNodeBuilderExtension.cs +++ b/main/src/addins/CBinding/Navigation/ProjectNodeBuilderExtension.cs @@ -45,8 +45,6 @@ namespace CBinding.Navigation { public class ProjectNodeBuilderExtension : NodeBuilderExtension { - public ClassPadEventHandler finishedBuildingTreeHandler; - public override bool CanBuildNode (Type dataType) { return typeof(CProject).IsAssignableFrom (dataType); @@ -58,14 +56,12 @@ namespace CBinding.Navigation protected override void Initialize () { - finishedBuildingTreeHandler = (ClassPadEventHandler)DispatchService.GuiDispatch (new ClassPadEventHandler (OnFinishedBuildingTree)); - - TagDatabaseManager.Instance.FileUpdated += finishedBuildingTreeHandler; + TagDatabaseManager.Instance.FileUpdated += OnFinishedBuildingTree; } public override void Dispose () { - TagDatabaseManager.Instance.FileUpdated -= finishedBuildingTreeHandler; + TagDatabaseManager.Instance.FileUpdated -= OnFinishedBuildingTree; } public static void CreatePadTree (object o) diff --git a/main/src/addins/CBinding/Parser/TagDatabaseManager.cs b/main/src/addins/CBinding/Parser/TagDatabaseManager.cs index c88d2c4db0..ffeb11d37e 100644 --- a/main/src/addins/CBinding/Parser/TagDatabaseManager.cs +++ b/main/src/addins/CBinding/Parser/TagDatabaseManager.cs @@ -455,7 +455,10 @@ namespace CBinding.Parser /// </summary> void OnFileUpdated (ClassPadEventArgs args) { - if (null != FileUpdated){ FileUpdated(args); } + Runtime.RunInMainThread (() => { + if (null != FileUpdated) + FileUpdated(args); + }); } private class ProjectFilePair diff --git a/main/src/addins/CBinding/Project/CProject.cs b/main/src/addins/CBinding/Project/CProject.cs index ed2c0b139a..43aa171aca 100644 --- a/main/src/addins/CBinding/Project/CProject.cs +++ b/main/src/addins/CBinding/Project/CProject.cs @@ -483,11 +483,13 @@ namespace CBinding internal void NotifyPackageRemovedFromProject (Package package) { + Runtime.AssertMainThread (); PackageRemovedFromProject (this, new ProjectPackageEventArgs (this, package)); } internal void NotifyPackageAddedToProject (Package package) { + Runtime.AssertMainThread (); PackageAddedToProject (this, new ProjectPackageEventArgs (this, package)); } diff --git a/main/src/addins/CBinding/ProjectPad/ProjectPackagesFolderNodeBuilder.cs b/main/src/addins/CBinding/ProjectPad/ProjectPackagesFolderNodeBuilder.cs index 9e86d90b68..733c3b8597 100644 --- a/main/src/addins/CBinding/ProjectPad/ProjectPackagesFolderNodeBuilder.cs +++ b/main/src/addins/CBinding/ProjectPad/ProjectPackagesFolderNodeBuilder.cs @@ -42,9 +42,6 @@ namespace CBinding.ProjectPad { public class ProjectPackagesFolderNodeBuilder : TypeNodeBuilder { - ProjectPackageEventHandler addedHandler; - ProjectPackageEventHandler removedHandler; - public override Type NodeDataType { get { return typeof(ProjectPackageCollection); } } @@ -53,28 +50,22 @@ namespace CBinding.ProjectPad { CProject project = ((ProjectPackageCollection)dataObject).Project; if (project == null) return; - project.PackageAddedToProject += addedHandler; - project.PackageRemovedFromProject += removedHandler; + project.PackageAddedToProject += OnAddPackage; + project.PackageRemovedFromProject += OnRemovePackage; } public override void OnNodeRemoved (object dataObject) { CProject project = ((ProjectPackageCollection)dataObject).Project; if (project == null) return; - project.PackageAddedToProject -= addedHandler; - project.PackageRemovedFromProject -= removedHandler; + project.PackageAddedToProject -= OnAddPackage; + project.PackageRemovedFromProject -= OnRemovePackage; } public override Type CommandHandlerType { get { return typeof(ProjectPackagesFolderNodeCommandHandler); } } - protected override void Initialize () - { - addedHandler = (ProjectPackageEventHandler)DispatchService.GuiDispatch (new ProjectPackageEventHandler (OnAddPackage)); - removedHandler = (ProjectPackageEventHandler)DispatchService.GuiDispatch (new ProjectPackageEventHandler (OnRemovePackage)); - } - public override string GetNodeName (ITreeNavigator thisNode, object dataObject) { return "Packages"; diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Highlighting/CSharpSyntaxMode.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Highlighting/CSharpSyntaxMode.cs index 4252abf53d..22a1d5f330 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Highlighting/CSharpSyntaxMode.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Highlighting/CSharpSyntaxMode.cs @@ -394,7 +394,7 @@ namespace MonoDevelop.CSharp.Highlighting static CSharpSyntaxMode () { - MonoDevelop.Debugger.DebuggingService.DisableConditionalCompilation += DispatchService.GuiDispatch (new EventHandler<DocumentEventArgs> (OnDisableConditionalCompilation)); + MonoDevelop.Debugger.DebuggingService.DisableConditionalCompilation += OnDisableConditionalCompilation; if (IdeApp.Workspace != null) { IdeApp.Workspace.ActiveConfigurationChanged += delegate { foreach (var doc in IdeApp.Workbench.Documents) { diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackageNodeBuilder.cs b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackageNodeBuilder.cs index f721dfc27e..07ee6b9f76 100644 --- a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackageNodeBuilder.cs +++ b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackageNodeBuilder.cs @@ -39,13 +39,6 @@ namespace MonoDevelop.Deployment.NodeBuilders { internal class PackageNodeBuilder: TypeNodeBuilder { - EventHandler configsChanged; - - public PackageNodeBuilder () - { - configsChanged = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnConfigurationsChanged)); - } - public override Type CommandHandlerType { get { return typeof(PackageNodeCommandHandler); } } @@ -81,13 +74,13 @@ namespace MonoDevelop.Deployment.NodeBuilders public override void OnNodeAdded (object dataObject) { Package package = dataObject as Package; - package.Changed += configsChanged; + package.Changed += OnConfigurationsChanged; } public override void OnNodeRemoved (object dataObject) { Package package = dataObject as Package; - package.Changed -= configsChanged; + package.Changed -= OnConfigurationsChanged; } public void OnConfigurationsChanged (object sender, EventArgs args) diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackagingProjectNodeBuilder.cs b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackagingProjectNodeBuilder.cs index 001fcccd4f..0102146c55 100644 --- a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackagingProjectNodeBuilder.cs +++ b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackagingProjectNodeBuilder.cs @@ -38,13 +38,6 @@ namespace MonoDevelop.Deployment.NodeBuilders { internal class PackagingProjectNodeBuilder: TypeNodeBuilder { - EventHandler configsChanged; - - public PackagingProjectNodeBuilder () - { - configsChanged = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnConfigurationsChanged)); - } - public override Type CommandHandlerType { get { return typeof(PackagingProjectNodeCommandHandler); } } @@ -86,13 +79,13 @@ namespace MonoDevelop.Deployment.NodeBuilders public override void OnNodeAdded (object dataObject) { PackagingProject project = dataObject as PackagingProject; - project.PackagesChanged += configsChanged; + project.PackagesChanged += OnConfigurationsChanged; } public override void OnNodeRemoved (object dataObject) { PackagingProject project = dataObject as PackagingProject; - project.PackagesChanged -= configsChanged; + project.PackagesChanged -= OnConfigurationsChanged; } public void OnConfigurationsChanged (object sender, EventArgs args) diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment/Package.cs b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment/Package.cs index 22362fda36..13911d12a6 100644 --- a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment/Package.cs +++ b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment/Package.cs @@ -70,6 +70,7 @@ namespace MonoDevelop.Deployment void NotifyChanged () { + Runtime.AssertMainThread (); if (Changed != null) Changed (this, EventArgs.Empty); } diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment/PackagingProject.cs b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment/PackagingProject.cs index a08d4d5d30..e04e44842f 100644 --- a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment/PackagingProject.cs +++ b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment/PackagingProject.cs @@ -67,6 +67,7 @@ namespace MonoDevelop.Deployment internal void NotifyPackagesChanged () { + AssertMainThread (); if (PackagesChanged != null) PackagesChanged (this, EventArgs.Empty); } diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs index f468753ed1..8255d95a99 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs @@ -51,11 +51,6 @@ namespace MonoDevelop.Debugger CommandEntrySet menuSet; TreeViewState treeState; - EventHandler<BreakpointEventArgs> breakpointUpdatedHandler; - EventHandler<BreakpointEventArgs> breakpointRemovedHandler; - EventHandler<BreakpointEventArgs> breakpointAddedHandler; - EventHandler breakpointChangedHandler; - enum Columns { Icon, @@ -162,15 +157,10 @@ namespace MonoDevelop.Debugger UpdateDisplay (); - breakpointUpdatedHandler = DispatchService.GuiDispatch<EventHandler<BreakpointEventArgs>> (OnBreakpointUpdated); - breakpointRemovedHandler = DispatchService.GuiDispatch<EventHandler<BreakpointEventArgs>> (OnBreakpointRemoved); - breakpointAddedHandler = DispatchService.GuiDispatch<EventHandler<BreakpointEventArgs>> (OnBreakpointAdded); - breakpointChangedHandler = DispatchService.GuiDispatch<EventHandler> (OnBreakpointChanged); - - breakpoints.BreakpointAdded += breakpointAddedHandler; - breakpoints.BreakpointRemoved += breakpointRemovedHandler; - breakpoints.Changed += breakpointChangedHandler; - breakpoints.BreakpointUpdated += breakpointUpdatedHandler; + breakpoints.BreakpointAdded += OnBreakpointAdded; + breakpoints.BreakpointRemoved += OnBreakpointRemoved; + breakpoints.Changed += OnBreakpointChanged; + breakpoints.BreakpointUpdated += OnBreakpointUpdated; DebuggingService.PausedEvent += OnDebuggerStatusCheck; DebuggingService.ResumedEvent += OnDebuggerStatusCheck; @@ -185,10 +175,10 @@ namespace MonoDevelop.Debugger public void Dispose () { - breakpoints.BreakpointAdded -= breakpointAddedHandler; - breakpoints.BreakpointRemoved -= breakpointRemovedHandler; - breakpoints.Changed -= breakpointChangedHandler; - breakpoints.BreakpointUpdated -= breakpointUpdatedHandler; + breakpoints.BreakpointAdded -= OnBreakpointAdded; + breakpoints.BreakpointRemoved -= OnBreakpointRemoved; + breakpoints.Changed -= OnBreakpointChanged; + breakpoints.BreakpointUpdated -= OnBreakpointUpdated; DebuggingService.PausedEvent -= OnDebuggerStatusCheck; DebuggingService.ResumedEvent -= OnDebuggerStatusCheck; @@ -226,7 +216,7 @@ namespace MonoDevelop.Debugger [CommandHandler (DebugCommands.EnableDisableBreakpoint)] protected void OnEnableDisable () { - breakpoints.Changed -= breakpointChangedHandler; + breakpoints.Changed -= OnBreakpointChanged; try { bool enable = false; @@ -258,7 +248,7 @@ namespace MonoDevelop.Debugger store.SetValue (iter, (int) Columns.Selected, enable); } } finally { - breakpoints.Changed += breakpointChangedHandler; + breakpoints.Changed += OnBreakpointChanged; } } @@ -282,7 +272,7 @@ namespace MonoDevelop.Debugger { bool deleted = false; - breakpoints.BreakpointRemoved -= breakpointRemovedHandler; + breakpoints.BreakpointRemoved -= OnBreakpointRemoved; try { // Note: since we'll be modifying the list of breakpoints, we need to sort @@ -302,7 +292,7 @@ namespace MonoDevelop.Debugger deleted = true; } } finally { - breakpoints.BreakpointRemoved += breakpointRemovedHandler; + breakpoints.BreakpointRemoved += OnBreakpointRemoved; } return deleted; @@ -369,7 +359,7 @@ namespace MonoDevelop.Debugger void ItemToggled (object o, ToggledArgs args) { - breakpoints.Changed -= breakpointChangedHandler; + breakpoints.Changed -= OnBreakpointChanged; try { TreeIter iter; @@ -382,7 +372,7 @@ namespace MonoDevelop.Debugger store.SetValue (iter, (int) Columns.Selected, bp.Enabled); } } finally { - breakpoints.Changed += breakpointChangedHandler; + breakpoints.Changed += OnBreakpointChanged; } } @@ -428,36 +418,38 @@ namespace MonoDevelop.Debugger void OnBreakpointUpdated (object s, BreakpointEventArgs args) { - TreeIter it; - - if (!store.GetIterFirst (out it)) - return; - - do { - var bp = (BreakEvent) store.GetValue (it, (int) Columns.Breakpoint); - if (bp == args.Breakpoint) { - string hitCount = bp.HitCountMode != HitCountMode.None ? bp.CurrentHitCount.ToString () : ""; - string traceVal = (bp.HitAction & HitAction.PrintExpression) != HitAction.None ? bp.LastTraceValue : ""; - store.SetValue (it, (int) Columns.HitCount, hitCount); - store.SetValue (it, (int) Columns.LastTrace, traceVal); - break; - } - } while (store.IterNext (ref it)); + Runtime.RunInMainThread (() => { + TreeIter it; + + if (!store.GetIterFirst (out it)) + return; + + do { + var bp = (BreakEvent) store.GetValue (it, (int) Columns.Breakpoint); + if (bp == args.Breakpoint) { + string hitCount = bp.HitCountMode != HitCountMode.None ? bp.CurrentHitCount.ToString () : ""; + string traceVal = (bp.HitAction & HitAction.PrintExpression) != HitAction.None ? bp.LastTraceValue : ""; + store.SetValue (it, (int) Columns.HitCount, hitCount); + store.SetValue (it, (int) Columns.LastTrace, traceVal); + break; + } + } while (store.IterNext (ref it)); + }); } protected void OnBreakpointAdded (object o, EventArgs args) { - UpdateDisplay (); + Runtime.RunInMainThread (UpdateDisplay); } protected void OnBreakpointRemoved (object o, EventArgs args) { - UpdateDisplay (); + Runtime.RunInMainThread (UpdateDisplay); } protected void OnBreakpointChanged (object o, EventArgs args) { - UpdateDisplay (); + Runtime.RunInMainThread (UpdateDisplay); } void OnDebuggerStatusCheck (object s, EventArgs a) diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs index 486658e944..08cf37d334 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs @@ -497,6 +497,7 @@ namespace MonoDevelop.Debugger public static void Resume () { + Runtime.AssertMainThread (); if (CheckIsBusy ()) return; @@ -506,6 +507,7 @@ namespace MonoDevelop.Debugger public static void RunToCursor (string fileName, int line, int column) { + Runtime.AssertMainThread (); if (CheckIsBusy ()) return; @@ -518,6 +520,7 @@ namespace MonoDevelop.Debugger public static void SetNextStatement (string fileName, int line, int column) { + Runtime.AssertMainThread (); if (!IsDebugging || IsRunning || CheckIsBusy ()) return; @@ -800,6 +803,7 @@ namespace MonoDevelop.Debugger static void NotifyLocationChanged () { + Runtime.AssertMainThread (); if (ExecutionLocationChanged != null) ExecutionLocationChanged (null, EventArgs.Empty); } @@ -834,6 +838,8 @@ namespace MonoDevelop.Debugger public static void StepInto () { + Runtime.AssertMainThread (); + if (!IsDebugging || IsRunning || CheckIsBusy ()) return; @@ -843,6 +849,8 @@ namespace MonoDevelop.Debugger public static void StepOver () { + Runtime.AssertMainThread (); + if (!IsDebugging || IsRunning || CheckIsBusy ()) return; @@ -852,6 +860,8 @@ namespace MonoDevelop.Debugger public static void StepOut () { + Runtime.AssertMainThread (); + if (!IsDebugging || IsRunning || CheckIsBusy ()) return; @@ -941,6 +951,7 @@ namespace MonoDevelop.Debugger public static void ShowCurrentExecutionLine () { + Runtime.AssertMainThread (); if (currentBacktrace != null) { var sf = GetCurrentVisibleFrame (); if (sf != null && !string.IsNullOrEmpty (sf.SourceLocation.FileName) && System.IO.File.Exists (sf.SourceLocation.FileName) && sf.SourceLocation.Line != -1) { @@ -952,6 +963,7 @@ namespace MonoDevelop.Debugger public static void ShowNextStatement () { + Runtime.AssertMainThread (); var location = NextStatementLocation; if (location != null && System.IO.File.Exists (location.FileName)) { diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderProject.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderProject.cs index 19591c794b..e14826584a 100644 --- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderProject.cs +++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderProject.cs @@ -114,7 +114,7 @@ namespace MonoDevelop.GtkCore.GuiBuilder if (System.IO.File.Exists (fileName)) { watcher.Path = Path.GetDirectoryName (fileName); watcher.Filter = Path.GetFileName (fileName); - watcher.Changed += (FileSystemEventHandler) DispatchService.GuiDispatch (new FileSystemEventHandler (OnSteticFileChanged)); + watcher.Changed += DispatchService.GuiDispatchDelegate (new FileSystemEventHandler (OnSteticFileChanged)); watcher.EnableRaisingEvents = true; } } diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WindowsFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WindowsFolderNodeBuilder.cs index b06919dae1..46f6f0f461 100644 --- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WindowsFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WindowsFolderNodeBuilder.cs @@ -39,13 +39,6 @@ namespace MonoDevelop.GtkCore.NodeBuilders { public class WindowsFolderNodeBuilder: TypeNodeBuilder { - EventHandler updateDelegate; - - public WindowsFolderNodeBuilder () - { - updateDelegate = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnUpdateFiles)); - } - public override Type NodeDataType { get { return typeof(WindowsFolder); } } @@ -105,13 +98,13 @@ namespace MonoDevelop.GtkCore.NodeBuilders public override void OnNodeAdded (object dataObject) { WindowsFolder w = (WindowsFolder) dataObject; - w.Changed += updateDelegate; + w.Changed += OnUpdateFiles; } public override void OnNodeRemoved (object dataObject) { WindowsFolder w = (WindowsFolder)dataObject; - w.Changed -= updateDelegate; + w.Changed -= OnUpdateFiles; w.Dispose (); } diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableBackgroundPackageActionRunner.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableBackgroundPackageActionRunner.cs index d4b11accde..91594523de 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableBackgroundPackageActionRunner.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableBackgroundPackageActionRunner.cs @@ -54,7 +54,7 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers backgroundDispatcher = handler;
}
- protected override void GuiDispatch (MessageHandler handler)
+ protected override void GuiDispatch (Action handler)
{
handler.Invoke ();
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestablePackageCompatibilityChecker.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestablePackageCompatibilityChecker.cs index e675032f49..afccc2de26 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestablePackageCompatibilityChecker.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestablePackageCompatibilityChecker.cs @@ -47,7 +47,7 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers return PackageReferenceFile;
}
- protected override void GuiDispatch (MessageHandler handler)
+ protected override void GuiDispatch (Action handler)
{
handler.Invoke ();
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs index 9e0f07b9e5..ee106102cb 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs @@ -210,7 +210,7 @@ namespace MonoDevelop.PackageManagement DispatchService.BackgroundDispatch (handler);
}
- protected virtual void GuiDispatch (MessageHandler handler)
+ protected virtual void GuiDispatch (Action handler)
{
DispatchService.GuiDispatch (handler);
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityChecker.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityChecker.cs index 1252aa9018..b34dc40c00 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityChecker.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityChecker.cs @@ -118,7 +118,7 @@ namespace MonoDevelop.PackageManagement return packageReferences.Any (packageReference => packageReference.RequireReinstallation);
}
- protected virtual void GuiDispatch (MessageHandler handler)
+ protected virtual void GuiDispatch (Action handler)
{
DispatchService.GuiDispatch (handler);
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressProvider.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressProvider.cs index 5ca37f109a..841e0a5944 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressProvider.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressProvider.cs @@ -33,7 +33,7 @@ namespace MonoDevelop.PackageManagement {
public class PackageManagementProgressProvider : IProgressProvider
{
- Action<MessageHandler> guiDispatcher;
+ Action<Action> guiDispatcher;
public PackageManagementProgressProvider (IPackageRepositoryFactoryEvents repositoryFactoryEvents)
: this (repositoryFactoryEvents, h => DispatchService.GuiDispatch (h))
@@ -42,7 +42,7 @@ namespace MonoDevelop.PackageManagement public PackageManagementProgressProvider (
IPackageRepositoryFactoryEvents repositoryFactoryEvents,
- Action<MessageHandler> guiDispatcher)
+ Action<Action> guiDispatcher)
{
repositoryFactoryEvents.RepositoryCreated += RepositoryCreated;
this.guiDispatcher = guiDispatcher;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/FileRegistry.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/FileRegistry.cs index c7703d4fad..e069c63271 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/FileRegistry.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/FileRegistry.cs @@ -52,12 +52,11 @@ namespace MonoDevelop.SourceEditor static FileRegistry () { fileSystemWatcher = new FileSystemWatcher (); - fileSystemWatcher.Created += (FileSystemEventHandler)DispatchService.GuiDispatch (new FileSystemEventHandler (OnFileChanged)); - fileSystemWatcher.Changed += (FileSystemEventHandler)DispatchService.GuiDispatch (new FileSystemEventHandler (OnFileChanged)); + fileSystemWatcher.Created += (s,e) => Runtime.RunInMainThread (() => OnFileChanged (s,e)); + fileSystemWatcher.Changed += (s,e) => Runtime.RunInMainThread (() => OnFileChanged (s,e)); - var fileChanged = DispatchService.GuiDispatch (new EventHandler<FileEventArgs> (HandleFileServiceChange)); - FileService.FileCreated += fileChanged; - FileService.FileChanged += fileChanged; + FileService.FileCreated += HandleFileServiceChange; + FileService.FileChanged += HandleFileServiceChange; } diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs index 33469789dc..305bced3be 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs @@ -72,11 +72,6 @@ namespace MonoDevelop.SourceEditor TextLineMarker debugStackLineMarker; int lastDebugLine = -1; BreakpointStore breakpoints; - EventHandler currentFrameChanged; - EventHandler executionLocationChanged; - EventHandler<BreakpointEventArgs> breakpointAdded; - EventHandler<BreakpointEventArgs> breakpointRemoved; - EventHandler<BreakpointEventArgs> breakpointStatusChanged; List<DocumentLine> breakpointSegments = new List<DocumentLine> (); DocumentLine debugStackSegment; DocumentLine currentLineSegment; @@ -185,11 +180,6 @@ namespace MonoDevelop.SourceEditor public SourceEditorView () { Counters.LoadedEditors++; - currentFrameChanged = (EventHandler)DispatchService.GuiDispatch (new EventHandler (OnCurrentFrameChanged)); - executionLocationChanged = (EventHandler)DispatchService.GuiDispatch (new EventHandler (OnExecutionLocationChanged)); - breakpointAdded = (EventHandler<BreakpointEventArgs>)DispatchService.GuiDispatch (new EventHandler<BreakpointEventArgs> (OnBreakpointAdded)); - breakpointRemoved = (EventHandler<BreakpointEventArgs>)DispatchService.GuiDispatch (new EventHandler<BreakpointEventArgs> (OnBreakpointRemoved)); - breakpointStatusChanged = (EventHandler<BreakpointEventArgs>)DispatchService.GuiDispatch (new EventHandler<BreakpointEventArgs> (OnBreakpointStatusChanged)); widget = new SourceEditorWidget (this); widget.TextEditor.Document.SyntaxModeChanged += HandleSyntaxModeChanged; @@ -230,14 +220,14 @@ namespace MonoDevelop.SourceEditor breakpoints = DebuggingService.Breakpoints; DebuggingService.DebugSessionStarted += OnDebugSessionStarted; - DebuggingService.ExecutionLocationChanged += executionLocationChanged; - DebuggingService.CurrentFrameChanged += currentFrameChanged; - DebuggingService.StoppedEvent += currentFrameChanged; - DebuggingService.ResumedEvent += currentFrameChanged; - breakpoints.BreakpointAdded += breakpointAdded; - breakpoints.BreakpointRemoved += breakpointRemoved; - breakpoints.BreakpointStatusChanged += breakpointStatusChanged; - breakpoints.BreakpointModified += breakpointStatusChanged; + DebuggingService.ExecutionLocationChanged += OnExecutionLocationChanged; + DebuggingService.CurrentFrameChanged += OnCurrentFrameChanged; + DebuggingService.StoppedEvent += OnCurrentFrameChanged; + DebuggingService.ResumedEvent += OnCurrentFrameChanged; + breakpoints.BreakpointAdded += OnBreakpointAdded; + breakpoints.BreakpointRemoved += OnBreakpointRemoved; + breakpoints.BreakpointStatusChanged += OnBreakpointStatusChanged; + breakpoints.BreakpointModified += OnBreakpointStatusChanged; DebuggingService.PinnedWatches.WatchAdded += OnWatchAdded; DebuggingService.PinnedWatches.WatchRemoved += OnWatchRemoved; DebuggingService.PinnedWatches.WatchChanged += OnWatchChanged; @@ -1023,15 +1013,15 @@ namespace MonoDevelop.SourceEditor TextEditorService.FileExtensionAdded -= HandleFileExtensionAdded; TextEditorService.FileExtensionRemoved -= HandleFileExtensionRemoved; - DebuggingService.ExecutionLocationChanged -= executionLocationChanged; + DebuggingService.ExecutionLocationChanged -= OnExecutionLocationChanged; DebuggingService.DebugSessionStarted -= OnDebugSessionStarted; - DebuggingService.CurrentFrameChanged -= currentFrameChanged; - DebuggingService.StoppedEvent -= currentFrameChanged; - DebuggingService.ResumedEvent -= currentFrameChanged; - breakpoints.BreakpointAdded -= breakpointAdded; - breakpoints.BreakpointRemoved -= breakpointRemoved; - breakpoints.BreakpointStatusChanged -= breakpointStatusChanged; - breakpoints.BreakpointModified -= breakpointStatusChanged; + DebuggingService.CurrentFrameChanged -= OnCurrentFrameChanged; + DebuggingService.StoppedEvent -= OnCurrentFrameChanged; + DebuggingService.ResumedEvent -= OnCurrentFrameChanged; + breakpoints.BreakpointAdded -= OnBreakpointAdded; + breakpoints.BreakpointRemoved -= OnBreakpointRemoved; + breakpoints.BreakpointStatusChanged -= OnBreakpointStatusChanged; + breakpoints.BreakpointModified -= OnBreakpointStatusChanged; DebuggingService.PinnedWatches.WatchAdded -= OnWatchAdded; DebuggingService.PinnedWatches.WatchRemoved -= OnWatchRemoved; DebuggingService.PinnedWatches.WatchChanged -= OnWatchChanged; @@ -1046,12 +1036,6 @@ namespace MonoDevelop.SourceEditor debugStackLineMarker = null; currentDebugLineMarker = null; - executionLocationChanged = null; - currentFrameChanged = null; - breakpointAdded = null; - breakpointRemoved = null; - breakpointStatusChanged = null; - if (ownerDocument != null) { ownerDocument.DocumentParsed -= HandleDocumentParsed; ownerDocument = null; @@ -1384,6 +1368,7 @@ namespace MonoDevelop.SourceEditor // Updated with a delay, to make sure it works when called as a // result of inserting/removing lines before a breakpoint position GLib.Timeout.Add (10, delegate { + // Make sure this runs in the UI thread. if (!isDisposed) UpdateBreakpoints (); return false; @@ -1397,6 +1382,7 @@ namespace MonoDevelop.SourceEditor // Updated with a delay, to make sure it works when called as a // result of inserting/removing lines before a breakpoint position GLib.Timeout.Add (10, delegate { + // Make sure this runs in the UI thread. if (!isDisposed) UpdateBreakpoints (); return false; @@ -1410,6 +1396,7 @@ namespace MonoDevelop.SourceEditor // Updated with a delay, to make sure it works when called as a // result of inserting/removing lines before a breakpoint position GLib.Timeout.Add (10, delegate { + // Make sure this runs in the UI thread. if (!isDisposed) UpdateBreakpoints (true); return false; diff --git a/main/src/addins/NUnit/Gui/NUnitAssemblyGroupConfigurationNodeBuilder.cs b/main/src/addins/NUnit/Gui/NUnitAssemblyGroupConfigurationNodeBuilder.cs index bea7c43faa..c47955eb17 100644 --- a/main/src/addins/NUnit/Gui/NUnitAssemblyGroupConfigurationNodeBuilder.cs +++ b/main/src/addins/NUnit/Gui/NUnitAssemblyGroupConfigurationNodeBuilder.cs @@ -41,13 +41,6 @@ namespace MonoDevelop.NUnit { public class NUnitAssemblyGroupConfigurationNodeBuilder: TypeNodeBuilder { - EventHandler assembliesChanged; - - public NUnitAssemblyGroupConfigurationNodeBuilder () - { - assembliesChanged = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnAssembliesChanged)); - } - public override Type CommandHandlerType { get { return typeof(NUnitAssemblyGroupConfigurationNodeCommandHandler); } } @@ -89,13 +82,13 @@ namespace MonoDevelop.NUnit public override void OnNodeAdded (object dataObject) { var config = (NUnitAssemblyGroupProjectConfiguration) dataObject; - config.AssembliesChanged += assembliesChanged; + config.AssembliesChanged += OnAssembliesChanged; } public override void OnNodeRemoved (object dataObject) { var config = (NUnitAssemblyGroupProjectConfiguration) dataObject; - config.AssembliesChanged -= assembliesChanged; + config.AssembliesChanged -= OnAssembliesChanged; } public void OnAssembliesChanged (object sender, EventArgs args) diff --git a/main/src/addins/NUnit/Gui/NUnitAssemblyGroupNodeBuilder.cs b/main/src/addins/NUnit/Gui/NUnitAssemblyGroupNodeBuilder.cs index 2cc8a48c5e..65d9060c92 100644 --- a/main/src/addins/NUnit/Gui/NUnitAssemblyGroupNodeBuilder.cs +++ b/main/src/addins/NUnit/Gui/NUnitAssemblyGroupNodeBuilder.cs @@ -39,13 +39,6 @@ namespace MonoDevelop.NUnit { public class NUnitAssemblyGroupNodeBuilder: TypeNodeBuilder { - ConfigurationEventHandler configsChanged; - - public NUnitAssemblyGroupNodeBuilder () - { - configsChanged = (ConfigurationEventHandler) DispatchService.GuiDispatch (new ConfigurationEventHandler (OnConfigurationsChanged)); - } - public override Type CommandHandlerType { get { return typeof(NUnitAssemblyGroupNodeCommandHandler); } } @@ -87,15 +80,15 @@ namespace MonoDevelop.NUnit public override void OnNodeAdded (object dataObject) { NUnitAssemblyGroupProject project = dataObject as NUnitAssemblyGroupProject; - project.ConfigurationAdded += configsChanged; - project.ConfigurationRemoved += configsChanged; + project.ConfigurationAdded += OnConfigurationsChanged; + project.ConfigurationRemoved += OnConfigurationsChanged; } public override void OnNodeRemoved (object dataObject) { NUnitAssemblyGroupProject project = dataObject as NUnitAssemblyGroupProject; - project.ConfigurationAdded -= configsChanged; - project.ConfigurationRemoved -= configsChanged; + project.ConfigurationAdded -= OnConfigurationsChanged; + project.ConfigurationRemoved -= OnConfigurationsChanged; } public void OnConfigurationsChanged (object sender, ConfigurationEventArgs args) diff --git a/main/src/addins/NUnit/Gui/TestNodeBuilder.cs b/main/src/addins/NUnit/Gui/TestNodeBuilder.cs index 7166e6b610..87f25d966f 100644 --- a/main/src/addins/NUnit/Gui/TestNodeBuilder.cs +++ b/main/src/addins/NUnit/Gui/TestNodeBuilder.cs @@ -39,15 +39,6 @@ namespace MonoDevelop.NUnit { public class TestNodeBuilder: TypeNodeBuilder { - EventHandler testChanged; - EventHandler testStatusChanged; - - public TestNodeBuilder () - { - testChanged = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnTestChanged)); - testStatusChanged = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnTestStatusChanged)); - } - public override Type CommandHandlerType { get { return typeof(TestNodeCommandHandler); } } @@ -117,15 +108,15 @@ namespace MonoDevelop.NUnit public override void OnNodeAdded (object dataObject) { UnitTest test = (UnitTest) dataObject; - test.TestChanged += testChanged; - test.TestStatusChanged += testStatusChanged; + test.TestChanged += OnTestChanged; + test.TestStatusChanged += OnTestStatusChanged; } public override void OnNodeRemoved (object dataObject) { UnitTest test = (UnitTest) dataObject; - test.TestChanged -= testChanged; - test.TestStatusChanged -= testStatusChanged; + test.TestChanged -= OnTestChanged; + test.TestStatusChanged -= OnTestStatusChanged; } public void OnTestChanged (object sender, EventArgs args) diff --git a/main/src/addins/NUnit/Gui/TestPad.cs b/main/src/addins/NUnit/Gui/TestPad.cs index 4587d9dffa..96b5f929bb 100644 --- a/main/src/addins/NUnit/Gui/TestPad.cs +++ b/main/src/addins/NUnit/Gui/TestPad.cs @@ -76,7 +76,6 @@ namespace MonoDevelop.NUnit int TestResultPage; int TestOutputPage; - EventHandler testChangedHandler; VBox detailsPad; ArrayList testNavigationHistory = new ArrayList (); @@ -87,8 +86,7 @@ namespace MonoDevelop.NUnit { base.Initialize (builders, options, menuPath); - testChangedHandler = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnDetailsTestChanged)); - testService.TestSuiteChanged += (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnTestSuiteChanged)); + testService.TestSuiteChanged += OnTestSuiteChanged; paned = new VPaned (); VBox vbox = new VBox (); @@ -563,7 +561,7 @@ namespace MonoDevelop.NUnit detailLabel.Markup = ""; detailsStore.Clear (); if (detailsTest != null) - detailsTest.TestChanged -= testChangedHandler; + detailsTest.TestChanged -= OnDetailsTestChanged; detailsTest = null; detailsDate = DateTime.MinValue; detailsReferenceDate = DateTime.MinValue; @@ -584,7 +582,7 @@ namespace MonoDevelop.NUnit detailsPad.Sensitive = true; if (detailsTest != null) - detailsTest.TestChanged -= testChangedHandler; + detailsTest.TestChanged -= OnDetailsTestChanged; if (detailsTest != test) { detailsTest = test; @@ -594,7 +592,7 @@ namespace MonoDevelop.NUnit if (testNavigationHistory.Count > 50) testNavigationHistory.RemoveAt (0); } - detailsTest.TestChanged += testChangedHandler; + detailsTest.TestChanged += OnDetailsTestChanged; if (test is UnitTestGroup) { infoBook.HidePage (TestResultPage); diff --git a/main/src/addins/NUnit/Services/NUnitService.cs b/main/src/addins/NUnit/Services/NUnitService.cs index dbee63fb48..2ecd85412b 100644 --- a/main/src/addins/NUnit/Services/NUnitService.cs +++ b/main/src/addins/NUnit/Services/NUnitService.cs @@ -313,8 +313,10 @@ namespace MonoDevelop.NUnit void NotifyTestSuiteChanged () { - if (TestSuiteChanged != null) - TestSuiteChanged (this, EventArgs.Empty); + Runtime.RunInMainThread (() => { + if (TestSuiteChanged != null) + TestSuiteChanged (this, EventArgs.Empty); + }); } public static void ResetResult (UnitTest test) diff --git a/main/src/addins/NUnit/Services/UnitTest.cs b/main/src/addins/NUnit/Services/UnitTest.cs index 4ece0ab11d..b7761d6289 100644 --- a/main/src/addins/NUnit/Services/UnitTest.cs +++ b/main/src/addins/NUnit/Services/UnitTest.cs @@ -393,6 +393,7 @@ namespace MonoDevelop.NUnit protected virtual void OnTestChanged () { Gtk.Application.Invoke (delegate { + // Run asynchronously in the UI thread if (TestChanged != null) TestChanged (this, EventArgs.Empty); }); @@ -401,6 +402,7 @@ namespace MonoDevelop.NUnit protected virtual void OnTestStatusChanged () { Gtk.Application.Invoke (delegate { + // Run asynchronously in the UI thread if (TestStatusChanged != null) TestStatusChanged (this, EventArgs.Empty); }); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyService.cs index 282b03f585..6968728bd6 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyService.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyService.cs @@ -168,8 +168,10 @@ namespace MonoDevelop.Core UserDataMigrationService.SetMigrationSource (migratableProfile, migrateVersion); properties.PropertyChanged += delegate(object sender, PropertyChangedEventArgs args) { - if (PropertyChanged != null) - PropertyChanged (sender, args); + Runtime.RunInMainThread (() => { + if (PropertyChanged != null) + PropertyChanged (sender, args); + }); }; Counters.PropertyServiceInitialization.EndTiming (); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs index c7229fe649..2e4e1dbad9 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs @@ -1188,6 +1188,7 @@ namespace MonoDevelop.Projects protected virtual void OnConfigurationAdded (ConfigurationEventArgs args) { + AssertMainThread (); ItemExtension.OnConfigurationAdded (args); } @@ -1199,6 +1200,7 @@ namespace MonoDevelop.Projects protected virtual void OnConfigurationRemoved (ConfigurationEventArgs args) { + AssertMainThread (); ItemExtension.OnConfigurationRemoved (args); } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs index 0d9f407a3d..123893630e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs @@ -95,7 +95,7 @@ namespace MonoDevelop.Components.MainToolbar UpdateSearchEntryLabel (); }; - executionTargetsChanged = DispatchService.GuiDispatch (new EventHandler ((sender, e) => UpdateCombos ())); + executionTargetsChanged = (sender, e) => UpdateCombos (); IdeApp.Workspace.LastWorkspaceItemClosed += (sender, e) => StatusBar.ShowReady (); IdeApp.Workspace.ActiveConfigurationChanged += (sender, e) => UpdateCombos (); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentFileStorage.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentFileStorage.cs index 362c9cb2ec..a2f3db5129 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentFileStorage.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentFileStorage.cs @@ -296,9 +296,10 @@ namespace MonoDevelop.Ide.Desktop void OnRecentFilesChanged (List<RecentItem> cachedItemList) { this.cachedItemList = cachedItemList; - if (changed != null) { - changed (this, EventArgs.Empty); - } + Runtime.RunInMainThread (() => { + if (changed != null) + changed (this, EventArgs.Empty); + }); } EventHandler changed; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/CombineNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/CombineNodeBuilder.cs index 59cb4ab063..5e76a6bed5 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/CombineNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/CombineNodeBuilder.cs @@ -37,13 +37,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ClassPad { public class CombineNodeBuilder: TypeNodeBuilder { - SolutionItemRenamedEventHandler combineNameChanged; - - public CombineNodeBuilder () - { - combineNameChanged = (SolutionItemRenamedEventHandler) DispatchService.GuiDispatch (new SolutionItemRenamedEventHandler (OnCombineRenamed)); - } - public override Type NodeDataType { get { return typeof(SolutionFolder); } } @@ -102,13 +95,13 @@ namespace MonoDevelop.Ide.Gui.Pads.ClassPad public override void OnNodeAdded (object dataObject) { SolutionFolder combine = (SolutionFolder) dataObject; - combine.NameChanged += combineNameChanged; + combine.NameChanged += OnCombineRenamed; } public override void OnNodeRemoved (object dataObject) { SolutionFolder combine = (SolutionFolder) dataObject; - combine.NameChanged -= combineNameChanged; + combine.NameChanged -= OnCombineRenamed; } void OnCombineRenamed (object sender, SolutionItemRenamedEventArgs e) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/ProjectNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/ProjectNodeBuilder.cs index 76e634c035..ad71ba09d4 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/ProjectNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/ProjectNodeBuilder.cs @@ -43,23 +43,14 @@ namespace MonoDevelop.Ide.Gui.Pads.ClassPad { public class ProjectNodeBuilder: TypeNodeBuilder { - SolutionItemRenamedEventHandler projectNameChanged; - - public ProjectNodeBuilder () - { - projectNameChanged = (SolutionItemRenamedEventHandler) DispatchService.GuiDispatch (new SolutionItemRenamedEventHandler (OnProjectRenamed)); - } - -// EventHandler<TypeUpdateInformationEventArgs> compilationUnitUpdated; protected override void Initialize () { -// compilationUnitUpdated = (EventHandler<TypeUpdateInformationEventArgs>) DispatchService.GuiDispatch (new EventHandler<TypeUpdateInformationEventArgs> (OnClassInformationChanged)); -// TypeSystemService.TypesUpdated += compilationUnitUpdated; +// TypeSystemService.TypesUpdated += OnClassInformationChanged; } public override void Dispose () { -// TypeSystemService.TypesUpdated -= compilationUnitUpdated; +// TypeSystemService.TypesUpdated -= OnClassInformationChanged; } public override Type NodeDataType { @@ -73,13 +64,13 @@ namespace MonoDevelop.Ide.Gui.Pads.ClassPad public override void OnNodeAdded (object dataObject) { Project project = (Project) dataObject; - project.NameChanged += projectNameChanged; + project.NameChanged += OnProjectRenamed; } public override void OnNodeRemoved (object dataObject) { Project project = (Project) dataObject; - project.NameChanged -= projectNameChanged; + project.NameChanged -= OnProjectRenamed; } public override string GetNodeName (ITreeNavigator thisNode, object dataObject) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs index d9a348c425..dafa16a10f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs @@ -41,14 +41,8 @@ namespace MonoDevelop.Ide.Gui.Pads.ClassPad { public class SolutionNodeBuilder: TypeNodeBuilder { - EventHandler<WorkspaceItemRenamedEventArgs> combineNameChanged; - EventHandler startupChanged; - public SolutionNodeBuilder () { - combineNameChanged = (EventHandler<WorkspaceItemRenamedEventArgs>) DispatchService.GuiDispatch (new EventHandler<WorkspaceItemRenamedEventArgs> (OnCombineRenamed)); - startupChanged = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnStartupChanged)); - IdeApp.Workspace.ItemAddedToSolution += OnEntryAdded; IdeApp.Workspace.ItemRemovedFromSolution += OnEntryRemoved; } @@ -121,15 +115,15 @@ namespace MonoDevelop.Ide.Gui.Pads.ClassPad public override void OnNodeAdded (object dataObject) { Solution solution = (Solution) dataObject; - solution.NameChanged += combineNameChanged; - solution.StartupItemChanged += startupChanged; + solution.NameChanged += OnCombineRenamed; + solution.StartupItemChanged += OnStartupChanged; } public override void OnNodeRemoved (object dataObject) { Solution solution = (Solution) dataObject; - solution.NameChanged -= combineNameChanged; - solution.StartupItemChanged -= startupChanged; + solution.NameChanged -= OnCombineRenamed; + solution.StartupItemChanged -= OnStartupChanged; } void OnStartupChanged (object sender, EventArgs args) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs index 934f2dd923..187eb0619d 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs @@ -61,9 +61,9 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad if (trackChanges != value) { trackChanges = value; if (trackChanges) - FileService.FileRenamed += new EventHandler<FileCopyEventArgs> (OnFileRenamed); + FileService.FileRenamed += OnFileRenamed; else - FileService.FileRenamed -= new EventHandler<FileCopyEventArgs> (OnFileRenamed); + FileService.FileRenamed -= OnFileRenamed; } } } @@ -119,7 +119,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad public void Dispose () { - FileService.FileRenamed -= new EventHandler<FileCopyEventArgs> (OnFileRenamed); + FileService.FileRenamed -= OnFileRenamed; } public void Remove () diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs index 0e70539c61..69ba9689d0 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs @@ -47,9 +47,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad Xwt.Drawing.Image folderOpenIcon; Xwt.Drawing.Image folderClosedIcon; - EventHandler<FileCopyEventArgs> fileRenamedHandler; - EventHandler<FileEventArgs> fileRemovedHandler; - public override Type NodeDataType { get { return typeof(ProjectFolder); } } @@ -74,17 +71,14 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad folderOpenIcon = Context.GetIcon (Stock.OpenFolder); folderClosedIcon = Context.GetIcon (Stock.ClosedFolder); - - fileRenamedHandler = DispatchService.GuiDispatch<EventHandler<FileCopyEventArgs>> (OnFolderRenamed); - fileRemovedHandler = DispatchService.GuiDispatch<EventHandler<FileEventArgs>> (OnFolderRemoved); } public override void OnNodeAdded (object dataObject) { base.OnNodeAdded (dataObject); ProjectFolder folder = (ProjectFolder) dataObject; - folder.FolderRenamed += fileRenamedHandler; - folder.FolderRemoved += fileRemovedHandler; + folder.FolderRenamed += OnFolderRenamed; + folder.FolderRemoved += OnFolderRemoved; folder.TrackChanges = true; } @@ -92,8 +86,8 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { base.OnNodeRemoved (dataObject); ProjectFolder folder = (ProjectFolder) dataObject; - folder.FolderRenamed -= fileRenamedHandler; - folder.FolderRemoved -= fileRemovedHandler; + folder.FolderRenamed -= OnFolderRenamed; + folder.FolderRemoved -= OnFolderRemoved; folder.Dispose (); } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs index c1f48c7aa1..8578ab3ec6 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs @@ -45,13 +45,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { class ProjectNodeBuilder: FolderNodeBuilder { - ProjectFileEventHandler fileAddedHandler; - ProjectFileEventHandler fileRemovedHandler; - ProjectFileRenamedEventHandler fileRenamedHandler; - ProjectFileEventHandler filePropertyChangedHandler; - SolutionItemModifiedEventHandler projectChanged; - EventHandler<FileEventArgs> deletedHandler; - public override Type NodeDataType { get { return typeof(Project); } } @@ -62,43 +55,36 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad protected override void Initialize () { - fileAddedHandler = (ProjectFileEventHandler) DispatchService.GuiDispatch (new ProjectFileEventHandler (OnAddFile)); - fileRemovedHandler = (ProjectFileEventHandler) DispatchService.GuiDispatch (new ProjectFileEventHandler (OnRemoveFile)); - filePropertyChangedHandler = (ProjectFileEventHandler) DispatchService.GuiDispatch (new ProjectFileEventHandler (OnFilePropertyChanged)); - fileRenamedHandler = (ProjectFileRenamedEventHandler) DispatchService.GuiDispatch (new ProjectFileRenamedEventHandler (OnRenameFile)); - projectChanged = (SolutionItemModifiedEventHandler) DispatchService.GuiDispatch (new SolutionItemModifiedEventHandler (OnProjectModified)); - deletedHandler = (EventHandler<FileEventArgs>) DispatchService.GuiDispatch (new EventHandler<FileEventArgs> (OnSystemFileDeleted)); - - IdeApp.Workspace.FileAddedToProject += fileAddedHandler; - IdeApp.Workspace.FileRemovedFromProject += fileRemovedHandler; - IdeApp.Workspace.FileRenamedInProject += fileRenamedHandler; - IdeApp.Workspace.FilePropertyChangedInProject += filePropertyChangedHandler; + IdeApp.Workspace.FileAddedToProject += OnAddFile; + IdeApp.Workspace.FileRemovedFromProject += OnRemoveFile; + IdeApp.Workspace.FileRenamedInProject += OnRenameFile; + IdeApp.Workspace.FilePropertyChangedInProject += OnFilePropertyChanged; IdeApp.Workspace.ActiveConfigurationChanged += IdeAppWorkspaceActiveConfigurationChanged; - FileService.FileRemoved += deletedHandler; + FileService.FileRemoved += OnSystemFileDeleted; } public override void Dispose () { - IdeApp.Workspace.FileAddedToProject -= fileAddedHandler; - IdeApp.Workspace.FileRemovedFromProject -= fileRemovedHandler; - IdeApp.Workspace.FileRenamedInProject -= fileRenamedHandler; - IdeApp.Workspace.FilePropertyChangedInProject -= filePropertyChangedHandler; + IdeApp.Workspace.FileAddedToProject -= OnAddFile; + IdeApp.Workspace.FileRemovedFromProject -= OnRemoveFile; + IdeApp.Workspace.FileRenamedInProject -= OnRenameFile; + IdeApp.Workspace.FilePropertyChangedInProject -= OnFilePropertyChanged; IdeApp.Workspace.ActiveConfigurationChanged -= IdeAppWorkspaceActiveConfigurationChanged; - FileService.FileRemoved -= deletedHandler; + FileService.FileRemoved -= OnSystemFileDeleted; } public override void OnNodeAdded (object dataObject) { base.OnNodeAdded (dataObject); Project project = (Project) dataObject; - project.Modified += projectChanged; + project.Modified += OnProjectModified; } public override void OnNodeRemoved (object dataObject) { base.OnNodeRemoved (dataObject); Project project = (Project) dataObject; - project.Modified -= projectChanged; + project.Modified -= OnProjectModified; } public override string GetNodeName (ITreeNavigator thisNode, object dataObject) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs index fc5373e319..de72cf3d01 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs @@ -40,9 +40,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { class ProjectReferenceFolderNodeBuilder: TypeNodeBuilder { - ProjectReferenceEventHandler addedHandler; - ProjectReferenceEventHandler removedHandler; - public override Type NodeDataType { get { return typeof(ProjectReferenceCollection); } } @@ -58,17 +55,14 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad protected override void Initialize () { - addedHandler = DispatchService.GuiDispatch<ProjectReferenceEventHandler> (OnAddReference); - removedHandler = DispatchService.GuiDispatch<ProjectReferenceEventHandler> (OnRemoveReference); - - IdeApp.Workspace.ReferenceAddedToProject += addedHandler; - IdeApp.Workspace.ReferenceRemovedFromProject += removedHandler; + IdeApp.Workspace.ReferenceAddedToProject += OnAddReference; + IdeApp.Workspace.ReferenceRemovedFromProject += OnRemoveReference; } public override void Dispose () { - IdeApp.Workspace.ReferenceAddedToProject -= addedHandler; - IdeApp.Workspace.ReferenceRemovedFromProject -= removedHandler; + IdeApp.Workspace.ReferenceAddedToProject -= OnAddReference; + IdeApp.Workspace.ReferenceRemovedFromProject -= OnRemoveReference; } public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs index fe7e6e9f42..e3ed0f0edf 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs @@ -40,13 +40,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { class ShowAllFilesBuilderExtension: NodeBuilderExtension { - ProjectFileEventHandler fileAddedHandler; - ProjectFileEventHandler fileRemovedHandler; - - EventHandler<FileEventArgs> createdHandler; - EventHandler<FileEventArgs> deletedHandler; - EventHandler<FileCopyEventArgs> renamedHandler; - List<Project> projects = new List<Project> (); public override bool CanBuildNode (Type dataType) @@ -63,28 +56,21 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad protected override void Initialize () { - fileAddedHandler = (ProjectFileEventHandler) DispatchService.GuiDispatch (new ProjectFileEventHandler (OnAddFile)); - fileRemovedHandler = (ProjectFileEventHandler) DispatchService.GuiDispatch (new ProjectFileEventHandler (OnRemoveFile)); - - createdHandler = (EventHandler<FileEventArgs>) DispatchService.GuiDispatch (new EventHandler<FileEventArgs> (OnSystemFileAdded)); - deletedHandler = (EventHandler<FileEventArgs>) DispatchService.GuiDispatch (new EventHandler<FileEventArgs> (OnSystemFileDeleted)); - renamedHandler = (EventHandler<FileCopyEventArgs>) DispatchService.GuiDispatch (new EventHandler<FileCopyEventArgs> (OnSystemFileRenamed)); - - IdeApp.Workspace.FileAddedToProject += fileAddedHandler; - IdeApp.Workspace.FileRemovedFromProject += fileRemovedHandler; + IdeApp.Workspace.FileAddedToProject += OnAddFile; + IdeApp.Workspace.FileRemovedFromProject += OnRemoveFile; - FileService.FileRenamed += renamedHandler; - FileService.FileRemoved += deletedHandler; - FileService.FileCreated += createdHandler; + FileService.FileRenamed += OnSystemFileRenamed; + FileService.FileRemoved += OnSystemFileDeleted; + FileService.FileCreated += OnSystemFileAdded; } public override void Dispose () { - IdeApp.Workspace.FileAddedToProject -= fileAddedHandler; - IdeApp.Workspace.FileRemovedFromProject -= fileRemovedHandler; - FileService.FileRenamed -= renamedHandler; - FileService.FileRemoved -= deletedHandler; - FileService.FileCreated -= createdHandler; + IdeApp.Workspace.FileAddedToProject -= OnAddFile; + IdeApp.Workspace.FileRemovedFromProject -= OnRemoveFile; + FileService.FileRenamed -= OnSystemFileRenamed; + FileService.FileRemoved -= OnSystemFileDeleted; + FileService.FileCreated -= OnSystemFileAdded; } public override void OnNodeAdded (object dataObject) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs index 1cb1f2f67f..d2ff61eff9 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs @@ -39,21 +39,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { class SolutionFolderNodeBuilder: TypeNodeBuilder { - SolutionItemRenamedEventHandler nameChanged; - SolutionItemChangeEventHandler entryAdded; - SolutionItemChangeEventHandler entryRemoved; - EventHandler<SolutionItemFileEventArgs> fileAdded; - EventHandler<SolutionItemFileEventArgs> fileRemoved; - - public SolutionFolderNodeBuilder () - { - nameChanged = DispatchService.GuiDispatch<SolutionItemRenamedEventHandler> (OnSolutionFolderRenamed); - entryAdded = DispatchService.GuiDispatch<SolutionItemChangeEventHandler> (OnEntryAdded); - entryRemoved = DispatchService.GuiDispatch<SolutionItemChangeEventHandler> (OnEntryRemoved); - fileAdded = DispatchService.GuiDispatch<EventHandler<SolutionItemFileEventArgs>> (OnFileAdded); - fileRemoved = DispatchService.GuiDispatch<EventHandler<SolutionItemFileEventArgs>> (OnFileRemoved); - } - public override Type NodeDataType { get { return typeof(SolutionFolder); } } @@ -112,21 +97,21 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad public override void OnNodeAdded (object dataObject) { SolutionFolder folder = (SolutionFolder) dataObject; - folder.NameChanged += nameChanged; - folder.ItemAdded += entryAdded; - folder.ItemRemoved += entryRemoved; - folder.SolutionItemFileAdded += fileAdded; - folder.SolutionItemFileRemoved += fileRemoved; + folder.NameChanged += OnSolutionFolderRenamed; + folder.ItemAdded += OnEntryAdded; + folder.ItemRemoved += OnEntryRemoved; + folder.SolutionItemFileAdded += OnFileAdded; + folder.SolutionItemFileRemoved += OnFileRemoved; } public override void OnNodeRemoved (object dataObject) { SolutionFolder folder = (SolutionFolder) dataObject; - folder.NameChanged -= nameChanged; - folder.ItemAdded -= entryAdded; - folder.ItemRemoved -= entryRemoved; - folder.SolutionItemFileAdded -= fileAdded; - folder.SolutionItemFileRemoved -= fileRemoved; + folder.NameChanged -= OnSolutionFolderRenamed; + folder.ItemAdded -= OnEntryAdded; + folder.ItemRemoved -= OnEntryRemoved; + folder.SolutionItemFileAdded -= OnFileAdded; + folder.SolutionItemFileRemoved -= OnFileRemoved; } void OnSolutionFolderRenamed (object sender, SolutionItemRenamedEventArgs e) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs index 459e065e99..82d17cde9c 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs @@ -43,33 +43,17 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { class SolutionNodeBuilder: TypeNodeBuilder { - SolutionItemChangeEventHandler globalItemAddedRemoved; - SolutionItemChangeEventHandler combineEntryAdded; - SolutionItemChangeEventHandler combineEntryRemoved; - EventHandler<WorkspaceItemRenamedEventArgs> combineNameChanged; - EventHandler startupChanged; - EventHandler<SolutionItemFileEventArgs> fileAdded; - EventHandler<SolutionItemFileEventArgs> fileRemoved; - public SolutionNodeBuilder () { - globalItemAddedRemoved = (SolutionItemChangeEventHandler) DispatchService.GuiDispatch (new SolutionItemChangeEventHandler (OnSolutionItemAddedRemoved)); - combineEntryAdded = (SolutionItemChangeEventHandler) DispatchService.GuiDispatch (new SolutionItemChangeEventHandler (OnEntryAdded)); - combineEntryRemoved = (SolutionItemChangeEventHandler) DispatchService.GuiDispatch (new SolutionItemChangeEventHandler (OnEntryRemoved)); - combineNameChanged = (EventHandler<WorkspaceItemRenamedEventArgs>) DispatchService.GuiDispatch (new EventHandler<WorkspaceItemRenamedEventArgs> (OnCombineRenamed)); - startupChanged = (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnStartupChanged)); - fileAdded = (EventHandler<SolutionItemFileEventArgs>) DispatchService.GuiDispatch (new EventHandler<SolutionItemFileEventArgs> (OnFileAdded)); - fileRemoved = (EventHandler<SolutionItemFileEventArgs>) DispatchService.GuiDispatch (new EventHandler<SolutionItemFileEventArgs> (OnFileRemoved)); - - IdeApp.Workspace.ItemAddedToSolution += globalItemAddedRemoved; - IdeApp.Workspace.ItemRemovedFromSolution += globalItemAddedRemoved; + IdeApp.Workspace.ItemAddedToSolution += OnSolutionItemAddedRemoved; + IdeApp.Workspace.ItemRemovedFromSolution += OnSolutionItemAddedRemoved; } public override void Dispose () { base.Dispose (); - IdeApp.Workspace.ItemAddedToSolution -= globalItemAddedRemoved; - IdeApp.Workspace.ItemRemovedFromSolution -= globalItemAddedRemoved; + IdeApp.Workspace.ItemAddedToSolution -= OnSolutionItemAddedRemoved; + IdeApp.Workspace.ItemRemovedFromSolution -= OnSolutionItemAddedRemoved; } @@ -121,23 +105,23 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad public override void OnNodeAdded (object dataObject) { Solution solution = (Solution) dataObject; - solution.NameChanged += combineNameChanged; - solution.StartupItemChanged += startupChanged; - solution.RootFolder.ItemAdded += combineEntryAdded; - solution.RootFolder.ItemRemoved += combineEntryRemoved; - solution.RootFolder.SolutionItemFileAdded += fileAdded; - solution.RootFolder.SolutionItemFileRemoved += fileRemoved; + solution.NameChanged += OnCombineRenamed; + solution.StartupItemChanged += OnStartupChanged; + solution.RootFolder.ItemAdded += OnEntryAdded; + solution.RootFolder.ItemRemoved += OnEntryRemoved; + solution.RootFolder.SolutionItemFileAdded += OnFileAdded; + solution.RootFolder.SolutionItemFileRemoved += OnFileRemoved; } public override void OnNodeRemoved (object dataObject) { Solution solution = (Solution) dataObject; - solution.NameChanged -= combineNameChanged; - solution.StartupItemChanged -= startupChanged; - solution.RootFolder.ItemAdded -= combineEntryAdded; - solution.RootFolder.ItemRemoved -= combineEntryRemoved; - solution.RootFolder.SolutionItemFileAdded -= fileAdded; - solution.RootFolder.SolutionItemFileRemoved -= fileRemoved; + solution.NameChanged -= OnCombineRenamed; + solution.StartupItemChanged -= OnStartupChanged; + solution.RootFolder.ItemAdded -= OnEntryAdded; + solution.RootFolder.ItemRemoved -= OnEntryRemoved; + solution.RootFolder.SolutionItemFileAdded -= OnFileAdded; + solution.RootFolder.SolutionItemFileRemoved -= OnFileRemoved; } void OnStartupChanged (object sender, EventArgs args) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs index d9958c9e15..0b76a56246 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs @@ -41,20 +41,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad { class WorkspaceNodeBuilder: TypeNodeBuilder { - EventHandler<WorkspaceItemChangeEventArgs> combineEntryAdded; - EventHandler<WorkspaceItemChangeEventArgs> combineEntryRemoved; - EventHandler<WorkspaceItemRenamedEventArgs> combineNameChanged; - - public WorkspaceNodeBuilder () - { - combineEntryAdded = OnEntryAdded; - combineEntryRemoved = OnEntryRemoved; - combineNameChanged = OnCombineRenamed; - combineEntryAdded = DispatchService.GuiDispatch (combineEntryAdded); - combineEntryRemoved = DispatchService.GuiDispatch (combineEntryRemoved); - combineNameChanged = DispatchService.GuiDispatch (combineNameChanged); - } - public override Type NodeDataType { get { return typeof(Workspace); } } @@ -100,17 +86,17 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad public override void OnNodeAdded (object dataObject) { Workspace ws = (Workspace) dataObject; - ws.ItemAdded += combineEntryAdded; - ws.ItemRemoved += combineEntryRemoved; - ws.NameChanged += combineNameChanged; + ws.ItemAdded += OnEntryAdded; + ws.ItemRemoved += OnEntryRemoved; + ws.NameChanged += OnCombineRenamed; } public override void OnNodeRemoved (object dataObject) { Workspace ws = (Workspace) dataObject; - ws.ItemAdded -= combineEntryAdded; - ws.ItemRemoved -= combineEntryRemoved; - ws.NameChanged -= combineNameChanged; + ws.ItemAdded -= OnEntryAdded; + ws.ItemRemoved -= OnEntryRemoved; + ws.NameChanged -= OnCombineRenamed; } void OnEntryAdded (object sender, WorkspaceItemEventArgs e) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs index ac2466a0ac..fd30546f06 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs @@ -191,9 +191,9 @@ namespace MonoDevelop.Ide.Gui.Pads sw = new MonoDevelop.Components.CompactScrolledWindow (); sw.ShadowType = ShadowType.None; sw.Add (view); - TaskService.Errors.TasksRemoved += DispatchService.GuiDispatch<TaskEventHandler> (ShowResults); - TaskService.Errors.TasksAdded += DispatchService.GuiDispatch<TaskEventHandler> (TaskAdded); - TaskService.Errors.TasksChanged += DispatchService.GuiDispatch<TaskEventHandler> (TaskChanged); + TaskService.Errors.TasksRemoved += ShowResults; + TaskService.Errors.TasksAdded += TaskAdded; + TaskService.Errors.TasksChanged += TaskChanged; TaskService.Errors.CurrentLocationTaskChanged += HandleTaskServiceErrorsCurrentLocationTaskChanged; IdeApp.Workspace.FirstWorkspaceItemOpened += OnCombineOpen; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs index ba22ec2043..bc7bf6f75c 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs @@ -257,10 +257,10 @@ namespace MonoDevelop.Ide.Gui public void InitializeWorkspace() { // FIXME: GTKize - IdeApp.ProjectOperations.CurrentProjectChanged += (ProjectEventHandler) DispatchService.GuiDispatch (new ProjectEventHandler(SetProjectTitle)); + IdeApp.ProjectOperations.CurrentProjectChanged += (s,a) => SetWorkbenchTitle (); - FileService.FileRemoved += (EventHandler<FileEventArgs>) DispatchService.GuiDispatch (new EventHandler<FileEventArgs>(CheckRemovedFile)); - FileService.FileRenamed += (EventHandler<FileCopyEventArgs>) DispatchService.GuiDispatch (new EventHandler<FileCopyEventArgs>(CheckRenamedFile)); + FileService.FileRemoved += CheckRemovedFile; + FileService.FileRenamed += CheckRenamedFile; // TopMenu.Selected += new CommandHandler(OnTopMenuSelected); // TopMenu.Deselected += new CommandHandler(OnTopMenuDeselected); @@ -730,11 +730,6 @@ namespace MonoDevelop.Ide.Gui return true; } - void SetProjectTitle(object sender, ProjectEventArgs e) - { - SetWorkbenchTitle (); - } - int activeWindowChangeLock = 0; public void LockActiveWindowChangeEvent () diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/LayoutComboBox.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/LayoutComboBox.cs index 3dce62c49a..a7acc0d79d 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/LayoutComboBox.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/LayoutComboBox.cs @@ -41,7 +41,7 @@ namespace MonoDevelop.Ide.Gui Combo.Changed += new EventHandler (OnComboChanged); ShowAll (); - IdeApp.Workbench.LayoutChanged += (EventHandler) DispatchService.GuiDispatch (new EventHandler (OnConfigurationsChanged)); + IdeApp.Workbench.LayoutChanged += OnConfigurationsChanged; } void OnConfigurationsChanged (object sender, EventArgs e) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MessageDialogProgressMonitor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MessageDialogProgressMonitor.cs index c26cb908e9..eecb0e6979 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MessageDialogProgressMonitor.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MessageDialogProgressMonitor.cs @@ -124,7 +124,7 @@ namespace MonoDevelop.Ide.ProgressMonitoring protected override void OnCompleted () { - DispatchService.GuiDispatch (new MessageHandler (ShowDialogs)); + DispatchService.GuiDispatch (ShowDialogs); base.OnCompleted (); } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MultiTaskDialogProgressMonitor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MultiTaskDialogProgressMonitor.cs index aa37059952..ac66b89aef 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MultiTaskDialogProgressMonitor.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ProgressMonitoring/MultiTaskDialogProgressMonitor.cs @@ -162,7 +162,7 @@ namespace MonoDevelop.Ide.ProgressMonitoring protected override void OnCompleted () { - DispatchService.GuiDispatch (new MessageHandler (ShowDialogs)); + DispatchService.GuiDispatch (ShowDialogs); base.OnCompleted (); } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs index 0751cf0303..b01e917033 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs @@ -134,10 +134,10 @@ namespace MonoDevelop.Ide.Tasks comments.EndTaskUpdates (); } - comments.TasksAdded += DispatchService.GuiDispatch<TaskEventHandler> (GeneratedTaskAdded); - comments.TasksRemoved += DispatchService.GuiDispatch<TaskEventHandler> (GeneratedTaskRemoved); + comments.TasksAdded += GeneratedTaskAdded; + comments.TasksRemoved += GeneratedTaskRemoved; - PropertyService.PropertyChanged += DispatchService.GuiDispatch<EventHandler<PropertyChangedEventArgs>> (OnPropertyUpdated); + PropertyService.PropertyChanged += OnPropertyUpdated; // Initialize with existing tags. foreach (TaskListEntry t in comments) @@ -149,10 +149,10 @@ namespace MonoDevelop.Ide.Tasks CommentTag.SpecialCommentTagsChanged -= OnCommentTagsChanged; IdeApp.Workspace.WorkspaceItemLoaded -= OnWorkspaceItemLoaded; IdeApp.Workspace.WorkspaceItemUnloaded -= OnWorkspaceItemUnloaded; - comments.TasksAdded -= DispatchService.GuiDispatch<TaskEventHandler> (GeneratedTaskAdded); - comments.TasksRemoved -= DispatchService.GuiDispatch<TaskEventHandler> (GeneratedTaskRemoved); + comments.TasksAdded -= GeneratedTaskAdded; + comments.TasksRemoved -= GeneratedTaskRemoved; - PropertyService.PropertyChanged -= DispatchService.GuiDispatch<EventHandler<PropertyChangedEventArgs>> (OnPropertyUpdated); + PropertyService.PropertyChanged -= OnPropertyUpdated; }; } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs index eaf3ca606a..5bc6c0215d 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs @@ -70,6 +70,7 @@ namespace MonoDevelop.Ide.Tasks }; TextEditorService.LineCountChangesReset += delegate (object sender, TextFileEventArgs args) { + Runtime.AssertMainThread (); TaskListEntry[] ctasks = GetFileTasks (args.TextFile.Name.FullPath); foreach (TaskListEntry task in ctasks) { if (task.SavedLine != -1) { @@ -81,6 +82,7 @@ namespace MonoDevelop.Ide.Tasks }; TextEditorService.LineCountChanged += delegate (object sender, LineCountEventArgs args) { + Runtime.AssertMainThread (); if (args.TextFile == null || args.TextFile.Name.IsNullOrEmpty) return; TaskListEntry[] ctasks = GetFileTasks (args.TextFile.Name.FullPath); @@ -97,6 +99,7 @@ namespace MonoDevelop.Ide.Tasks public void Add (TaskListEntry task) { + Runtime.AssertMainThread (); tasks.Add (task); OnTaskAdded (task); } @@ -144,6 +147,7 @@ namespace MonoDevelop.Ide.Tasks public void Remove (TaskListEntry task) { + Runtime.AssertMainThread (); if (tasks.Remove (task)) OnTaskRemoved (task); } @@ -219,6 +223,7 @@ namespace MonoDevelop.Ide.Tasks public void BeginTaskUpdates () { + Runtime.AssertMainThread (); if (taskUpdateCount++ != 0) return; tasksAdded = new List<TaskListEntry> (); @@ -227,6 +232,7 @@ namespace MonoDevelop.Ide.Tasks public void EndTaskUpdates () { + Runtime.AssertMainThread (); if (--taskUpdateCount != 0) return; List<TaskListEntry> oldAdded = tasksAdded; @@ -269,7 +275,7 @@ namespace MonoDevelop.Ide.Tasks } } - internal void OnTaskAdded (TaskListEntry t) + void OnTaskAdded (TaskListEntry t) { if (t.FileName != FilePath.Null) { TaskListEntry[] ta; @@ -287,7 +293,7 @@ namespace MonoDevelop.Ide.Tasks NotifyTasksAdded (new TaskListEntry [] { t }); } - internal void OnTaskRemoved (TaskListEntry t) + void OnTaskRemoved (TaskListEntry t) { if (t.FileName != FilePath.Null) { TaskListEntry[] ta; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs index 16ba0c9c36..db20452b03 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs @@ -127,16 +127,16 @@ namespace MonoDevelop.Ide.Tasks delButton.Clicked += new EventHandler (DeleteUserTaskClicked); delButton.TooltipText = GettextCatalog.GetString ("Delete Task"); - TaskService.UserTasks.TasksChanged += DispatchService.GuiDispatch<TaskEventHandler> (UserTasksChanged); - TaskService.UserTasks.TasksAdded += DispatchService.GuiDispatch<TaskEventHandler> (UserTasksChanged); - TaskService.UserTasks.TasksRemoved += DispatchService.GuiDispatch<TaskEventHandler> (UserTasksChanged); + TaskService.UserTasks.TasksChanged += UserTasksChanged; + TaskService.UserTasks.TasksAdded += UserTasksChanged; + TaskService.UserTasks.TasksRemoved += UserTasksChanged; if (IdeApp.Workspace.IsOpen) solutionLoaded = true; IdeApp.Workspace.FirstWorkspaceItemOpened += CombineOpened; IdeApp.Workspace.LastWorkspaceItemClosed += CombineClosed; - PropertyService.PropertyChanged += DispatchService.GuiDispatch<EventHandler<PropertyChangedEventArgs>> (OnPropertyUpdated); + PropertyService.PropertyChanged += OnPropertyUpdated; ValidateButtons (); // Initialize with existing tags. diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageRecentProjectsList.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageRecentProjectsList.cs index 6083fef4d7..bbde387838 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageRecentProjectsList.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageRecentProjectsList.cs @@ -37,7 +37,6 @@ namespace MonoDevelop.Ide.WelcomePage public class WelcomePageRecentProjectsList : WelcomePageSection
{
bool destroyed;
- readonly EventHandler recentChangesHandler;
readonly VBox box;
int itemCount = 10;
readonly Xwt.Drawing.Image openProjectIcon;
@@ -52,8 +51,7 @@ namespace MonoDevelop.Ide.WelcomePage itemCount = count;
- recentChangesHandler = DispatchService.GuiDispatch (new EventHandler (RecentFilesChanged));
- DesktopService.RecentFiles.Changed += recentChangesHandler;
+ DesktopService.RecentFiles.Changed += RecentFilesChanged;
RecentFilesChanged (null, null);
SetContent (box);
@@ -66,7 +64,7 @@ namespace MonoDevelop.Ide.WelcomePage {
destroyed = true;
base.OnDestroyed ();
- DesktopService.RecentFiles.Changed -= recentChangesHandler;
+ DesktopService.RecentFiles.Changed -= RecentFilesChanged;
}
void RecentFilesChanged (object sender, EventArgs e)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DesktopService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DesktopService.cs index 2321e3d88a..b8cba9ec3e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DesktopService.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DesktopService.cs @@ -65,10 +65,8 @@ namespace MonoDevelop.Ide if (PlatformService.CanOpenTerminal) Runtime.ProcessService.SetExternalConsoleHandler (PlatformService.StartConsoleProcess); - FileService.FileRemoved += DispatchService.GuiDispatch ( - new EventHandler<FileEventArgs> (NotifyFileRemoved)); - FileService.FileRenamed += DispatchService.GuiDispatch ( - new EventHandler<FileCopyEventArgs> (NotifyFileRenamed)); + FileService.FileRemoved += NotifyFileRemoved; + FileService.FileRenamed += NotifyFileRenamed; // Ensure we initialize the native toolkit on the UI thread immediately // so that we can safely access this property later in other threads diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DispatchService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DispatchService.cs index 0e9cc35652..ad91cbef1e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DispatchService.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DispatchService.cs @@ -40,7 +40,7 @@ using System.Threading.Tasks; namespace MonoDevelop.Ide { - public class DispatchService + public static class DispatchService { static Queue<GenericMessageContainer> backgroundQueue = new Queue<GenericMessageContainer> (); static ManualResetEvent backgroundThreadWait = new ManualResetEvent (false); @@ -211,12 +211,12 @@ namespace MonoDevelop.Ide throw new InvalidOperationException ("This method can only be called in the GUI thread"); } - public static Delegate GuiDispatch (Delegate del) + public static Delegate GuiDispatchDelegate (Delegate del) { return guiContext.CreateSynchronizedDelegate (del); } - public static T GuiDispatch<T> (T theDelegate) + public static T GuiDispatchDelegate<T> (T theDelegate) { if (guiContext == null) return theDelegate; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs index 78a8ee42bf..33cf83c704 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs @@ -55,39 +55,11 @@ namespace MonoDevelop.Ide bool useDefaultRuntime; string preferredActiveExecutionTarget; - ProjectFileEventHandler fileAddedToProjectHandler; - ProjectFileEventHandler fileRemovedFromProjectHandler; - ProjectFileRenamedEventHandler fileRenamedInProjectHandler; - ProjectFileEventHandler fileChangedInProjectHandler; - ProjectFileEventHandler filePropertyChangedInProjectHandler; - ProjectReferenceEventHandler referenceAddedToProjectHandler; - ProjectReferenceEventHandler referenceRemovedFromProjectHandler; - SolutionItemChangeEventHandler itemAddedToSolutionHandler; - SolutionItemChangeEventHandler itemRemovedFromSolutionHandler; - EventHandler<WorkspaceItemChangeEventArgs> descendantItemAddedHandler; - EventHandler<WorkspaceItemChangeEventArgs> descendantItemRemovedHandler; - EventHandler configurationsChanged; - internal RootWorkspace () { items = new RootWorkspaceItemCollection (this); - fileAddedToProjectHandler = (ProjectFileEventHandler) DispatchService.GuiDispatch (new ProjectFileEventHandler (NotifyFileAddedToProject)); - fileRemovedFromProjectHandler = (ProjectFileEventHandler) DispatchService.GuiDispatch (new ProjectFileEventHandler (NotifyFileRemovedFromProject)); - fileRenamedInProjectHandler = (ProjectFileRenamedEventHandler) DispatchService.GuiDispatch (new ProjectFileRenamedEventHandler (NotifyFileRenamedInProject)); - fileChangedInProjectHandler = (ProjectFileEventHandler) DispatchService.GuiDispatch (new ProjectFileEventHandler (NotifyFileChangedInProject)); - filePropertyChangedInProjectHandler = (ProjectFileEventHandler) DispatchService.GuiDispatch (new ProjectFileEventHandler (NotifyFilePropertyChangedInProject)); - referenceAddedToProjectHandler = (ProjectReferenceEventHandler) DispatchService.GuiDispatch (new ProjectReferenceEventHandler (NotifyReferenceAddedToProject)); - referenceRemovedFromProjectHandler = (ProjectReferenceEventHandler) DispatchService.GuiDispatch (new ProjectReferenceEventHandler (NotifyReferenceRemovedFromProject)); - - itemAddedToSolutionHandler = (SolutionItemChangeEventHandler) DispatchService.GuiDispatch (new SolutionItemChangeEventHandler (NotifyItemAddedToSolution)); - itemRemovedFromSolutionHandler = (SolutionItemChangeEventHandler) DispatchService.GuiDispatch (new SolutionItemChangeEventHandler (NotifyItemRemovedFromSolution)); - - descendantItemAddedHandler = (EventHandler<WorkspaceItemChangeEventArgs>) DispatchService.GuiDispatch (new EventHandler<WorkspaceItemChangeEventArgs> (NotifyDescendantItemAdded)); - descendantItemRemovedHandler = (EventHandler<WorkspaceItemChangeEventArgs>) DispatchService.GuiDispatch (new EventHandler<WorkspaceItemChangeEventArgs> (NotifyDescendantItemRemoved)); - configurationsChanged = (EventHandler) DispatchService.GuiDispatch (new EventHandler (NotifyConfigurationsChanged)); - - FileService.FileRenamed += (EventHandler<FileCopyEventArgs>) DispatchService.GuiDispatch (new EventHandler<FileCopyEventArgs> (CheckFileRename)); + FileService.FileRenamed += CheckFileRename; // Set the initial active runtime UseDefaultRuntime = true; @@ -99,7 +71,7 @@ namespace MonoDevelop.Ide } }; - FileService.FileChanged += (EventHandler<FileEventArgs>) DispatchService.GuiDispatch (new EventHandler<FileEventArgs> (CheckWorkspaceItems)); + FileService.FileChanged += CheckWorkspaceItems; } public RootWorkspaceItemCollection Items { @@ -961,10 +933,10 @@ namespace MonoDevelop.Ide Workspace ws = item as Workspace; if (ws != null) { - ws.DescendantItemAdded += descendantItemAddedHandler; - ws.DescendantItemRemoved += descendantItemRemovedHandler; + ws.DescendantItemAdded += NotifyDescendantItemAdded; + ws.DescendantItemRemoved += NotifyDescendantItemRemoved; } - item.ConfigurationsChanged += configurationsChanged; + item.ConfigurationsChanged += NotifyConfigurationsChanged; WorkspaceItemEventArgs args = new WorkspaceItemEventArgs (item); NotifyDescendantItemAdded (this, args); @@ -995,10 +967,10 @@ namespace MonoDevelop.Ide { Workspace ws = item as Workspace; if (ws != null) { - ws.DescendantItemAdded -= descendantItemAddedHandler; - ws.DescendantItemRemoved -= descendantItemRemovedHandler; + ws.DescendantItemAdded -= NotifyDescendantItemAdded; + ws.DescendantItemRemoved -= NotifyDescendantItemRemoved; } - item.ConfigurationsChanged -= configurationsChanged; + item.ConfigurationsChanged -= NotifyConfigurationsChanged; WorkspaceItemEventArgs args = new WorkspaceItemEventArgs (item); NotifyConfigurationsChanged (null, args); @@ -1019,28 +991,28 @@ namespace MonoDevelop.Ide void SubscribeSolution (Solution sol) { - sol.FileAddedToProject += fileAddedToProjectHandler; - sol.FileRemovedFromProject += fileRemovedFromProjectHandler; - sol.FileRenamedInProject += fileRenamedInProjectHandler; - sol.FileChangedInProject += fileChangedInProjectHandler; - sol.FilePropertyChangedInProject += filePropertyChangedInProjectHandler; - sol.ReferenceAddedToProject += referenceAddedToProjectHandler; - sol.ReferenceRemovedFromProject += referenceRemovedFromProjectHandler; - sol.SolutionItemAdded += itemAddedToSolutionHandler; - sol.SolutionItemRemoved += itemRemovedFromSolutionHandler; + sol.FileAddedToProject += NotifyFileAddedToProject; + sol.FileRemovedFromProject += NotifyFileRemovedFromProject; + sol.FileRenamedInProject += NotifyFileRenamedInProject; + sol.FileChangedInProject += NotifyFileChangedInProject; + sol.FilePropertyChangedInProject += NotifyFilePropertyChangedInProject; + sol.ReferenceAddedToProject += NotifyReferenceAddedToProject; + sol.ReferenceRemovedFromProject += NotifyReferenceRemovedFromProject; + sol.SolutionItemAdded += NotifyItemAddedToSolution; + sol.SolutionItemRemoved += NotifyItemRemovedFromSolution; } void UnsubscribeSolution (Solution solution) { - solution.FileAddedToProject -= fileAddedToProjectHandler; - solution.FileRemovedFromProject -= fileRemovedFromProjectHandler; - solution.FileRenamedInProject -= fileRenamedInProjectHandler; - solution.FileChangedInProject -= fileChangedInProjectHandler; - solution.FilePropertyChangedInProject -= filePropertyChangedInProjectHandler; - solution.ReferenceAddedToProject -= referenceAddedToProjectHandler; - solution.ReferenceRemovedFromProject -= referenceRemovedFromProjectHandler; - solution.SolutionItemAdded -= itemAddedToSolutionHandler; - solution.SolutionItemRemoved -= itemRemovedFromSolutionHandler; + solution.FileAddedToProject -= NotifyFileAddedToProject; + solution.FileRemovedFromProject -= NotifyFileRemovedFromProject; + solution.FileRenamedInProject -= NotifyFileRenamedInProject; + solution.FileChangedInProject -= NotifyFileChangedInProject; + solution.FilePropertyChangedInProject -= NotifyFilePropertyChangedInProject; + solution.ReferenceAddedToProject -= NotifyReferenceAddedToProject; + solution.ReferenceRemovedFromProject -= NotifyReferenceRemovedFromProject; + solution.SolutionItemAdded -= NotifyItemAddedToSolution; + solution.SolutionItemRemoved -= NotifyItemRemovedFromSolution; } void NotifyConfigurationsChanged (object s, EventArgs a) |