From 60a010efd1f5a92d8033a4474583e35ab0459894 Mon Sep 17 00:00:00 2001 From: biwa <6475593+biwa@users.noreply.github.com> Date: Fri, 9 Oct 2020 18:53:10 +0200 Subject: [PATCH] Editing modes: fixed some crashes related to undoing/redoing while objects with associations were highlighted --- Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs | 8 ++++++++ Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs | 8 ++++++++ Source/Plugins/BuilderModes/ClassicModes/ThingsMode.cs | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs index 2e7c04f..8bdbde6 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs @@ -938,6 +938,10 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.Map.ConvertSelection(SelectionType.Linedefs); } + // If something is highlighted make sure to update the association so that it contains valid data + if (highlighted != null && !highlighted.IsDisposed) + highlightasso.Set(highlighted); + // Update selection info and labels UpdateSelectionInfo(); SetupSectorLabels(); @@ -955,6 +959,10 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.Map.ConvertSelection(SelectionType.Linedefs); } + // If something is highlighted make sure to update the association so that it contains valid data + if (highlighted != null && !highlighted.IsDisposed) + highlightasso.Set(highlighted); + // Update selection info and labels UpdateSelectionInfo(); SetupSectorLabels(); diff --git a/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs index fedaada..8c39c87 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs @@ -1502,6 +1502,10 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.Map.ConvertSelection(SelectionType.Sectors); } + // If something is highlighted make sure to update the association so that it contains valid data + if (highlighted != null && !highlighted.IsDisposed) + highlightasso.Set(highlighted); + // Clear labels SetupLabels(); UpdateEffectLabels(); //mxd @@ -1531,6 +1535,10 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.Map.ConvertSelection(SelectionType.Sectors); } + // If something is highlighted make sure to update the association so that it contains valid data + if (highlighted != null && !highlighted.IsDisposed) + highlightasso.Set(highlighted); + // Clear labels SetupLabels(); UpdateEffectLabels(); //mxd diff --git a/Source/Plugins/BuilderModes/ClassicModes/ThingsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/ThingsMode.cs index ec82487..66fc73b 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/ThingsMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/ThingsMode.cs @@ -570,6 +570,10 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.Map.SelectMarkedGeometry(true, true); } + // If something is highlighted make sure to update the association so that it contains valid data + if (highlighted != null && !highlighted.IsDisposed) + highlightasso.Set(highlighted); + UpdateSelectionInfo(); // Update selection info and labels UpdateHelperObjects(); // Update helper lines SetupSectorLabels(); // And sector labels @@ -586,6 +590,10 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.Map.SelectMarkedGeometry(true, true); } + // If something is highlighted make sure to update the association so that it contains valid data + if (highlighted != null && !highlighted.IsDisposed) + highlightasso.Set(highlighted); + UpdateSelectionInfo(); // Update selection info and labels UpdateHelperObjects(); // Update helper lines SetupSectorLabels(); // And sector labels