diff --git a/OpenRA.Mods.Common/EditorBrushes/EditorActorBrush.cs b/OpenRA.Mods.Common/EditorBrushes/EditorActorBrush.cs index 9b2d5a5c98..ad7e52e416 100644 --- a/OpenRA.Mods.Common/EditorBrushes/EditorActorBrush.cs +++ b/OpenRA.Mods.Common/EditorBrushes/EditorActorBrush.cs @@ -24,7 +24,7 @@ using OpenRA.Widgets; namespace OpenRA.Mods.Common.Widgets { - public class EditorActorBrush : IEditorBrush + public sealed class EditorActorBrush : IEditorBrush { public readonly ActorInfo Actor; @@ -148,5 +148,7 @@ namespace OpenRA.Mods.Common.Widgets preview.Bounds.Width = (int)(zoom * s.X); preview.Bounds.Height = (int)(zoom * s.Y); } + + public void Dispose() { } } } diff --git a/OpenRA.Mods.Common/EditorBrushes/EditorDefaultBrush.cs b/OpenRA.Mods.Common/EditorBrushes/EditorDefaultBrush.cs index b1ef3de1b2..1c9822e03a 100644 --- a/OpenRA.Mods.Common/EditorBrushes/EditorDefaultBrush.cs +++ b/OpenRA.Mods.Common/EditorBrushes/EditorDefaultBrush.cs @@ -24,13 +24,13 @@ using OpenRA.Widgets; namespace OpenRA.Mods.Common.Widgets { - public interface IEditorBrush + public interface IEditorBrush : IDisposable { bool HandleMouseInput(MouseInput mi); void Tick(); } - public class EditorDefaultBrush : IEditorBrush + public sealed class EditorDefaultBrush : IEditorBrush { public readonly ActorInfo Actor; @@ -110,5 +110,6 @@ namespace OpenRA.Mods.Common.Widgets } public void Tick() { } + public void Dispose() { } } } diff --git a/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs b/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs index d6182e68a6..74c5d723a9 100644 --- a/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs +++ b/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs @@ -24,7 +24,7 @@ using OpenRA.Widgets; namespace OpenRA.Mods.Common.Widgets { - public class EditorResourceBrush : IEditorBrush + public sealed class EditorResourceBrush : IEditorBrush { public readonly ResourceTypeInfo ResourceType; @@ -119,5 +119,7 @@ namespace OpenRA.Mods.Common.Widgets preview.Bounds.X = cellScreenPixel.X; preview.Bounds.Y = cellScreenPixel.Y; } + + public void Dispose() { } } } diff --git a/OpenRA.Mods.Common/EditorBrushes/EditorTileBrush.cs b/OpenRA.Mods.Common/EditorBrushes/EditorTileBrush.cs index e0698219ad..737a9ea60e 100644 --- a/OpenRA.Mods.Common/EditorBrushes/EditorTileBrush.cs +++ b/OpenRA.Mods.Common/EditorBrushes/EditorTileBrush.cs @@ -24,7 +24,7 @@ using OpenRA.Widgets; namespace OpenRA.Mods.Common.Widgets { - public class EditorTileBrush : IEditorBrush + public sealed class EditorTileBrush : IEditorBrush { public readonly ushort Template; @@ -156,5 +156,7 @@ namespace OpenRA.Mods.Common.Widgets preview.Bounds.Width = (int)(zoom * bounds.Width); preview.Bounds.Height = (int)(zoom * bounds.Height); } + + public void Dispose() { } } } diff --git a/OpenRA.Mods.Common/Widgets/EditorViewportControllerWidget.cs b/OpenRA.Mods.Common/Widgets/EditorViewportControllerWidget.cs index 78ceb84c71..d1c324e10f 100644 --- a/OpenRA.Mods.Common/Widgets/EditorViewportControllerWidget.cs +++ b/OpenRA.Mods.Common/Widgets/EditorViewportControllerWidget.cs @@ -48,6 +48,9 @@ namespace OpenRA.Mods.Common.Widgets public void ClearBrush() { SetBrush(null); } public void SetBrush(IEditorBrush brush) { + if (CurrentBrush != null) + CurrentBrush.Dispose(); + CurrentBrush = brush ?? defaultBrush; }