From 6177c9cca95fbade221e31b89cc405d132075277 Mon Sep 17 00:00:00 2001
From: MaxED <j.maxed@gmail.com>
Date: Mon, 15 Feb 2016 14:06:46 +0000
Subject: [PATCH] Fixed, Texture Browser window: in some cases navigating the
 textures list using up/down arrows caused an exception. Fixed, Map Analysis
 window: fixed an exception on copying warnings to clipboard when the
 clipboard was used by other application. Fixed, TEXTURES parser: added
 special handling for "TNT1A0" sprite name so a texture with this sprite as a
 single patch is no longer treated as failed loading. Fixed, Visual mode: in
 some cases (like line slopes used in several adjacent sectors) sector effect
 updates were triggered multiple times for the same sector, resulting in
 noticeable slowdowns and in some cases in infinite recursion. Updated ZDoom
 ACC.

---
 Build/Compilers/ZDoom/acc.exe                 | Bin 66560 -> 67072 bytes
 Build/Compilers/ZDoom/zspecial.acs            |  76 ++++++++++++------
 Source/Core/Controls/ImageBrowserControl.cs   |  26 +++---
 Source/Core/Data/HighResImage.cs              |  23 ++++--
 Source/Core/Data/TexturePatch.cs              |   3 +
 Source/Core/Windows/AboutForm.cs              |   3 +-
 Source/Core/ZDoom/PatchStructure.cs           |  32 +++++---
 Source/Core/ZDoom/TextureStructure.cs         |  14 +---
 .../BuilderModes/Interface/ErrorCheckForm.cs  |   2 +-
 .../VisualModes/BaseVisualSector.cs           |   8 +-
 .../BuilderModes/VisualModes/SectorData.cs    |   7 ++
 11 files changed, 123 insertions(+), 71 deletions(-)

diff --git a/Build/Compilers/ZDoom/acc.exe b/Build/Compilers/ZDoom/acc.exe
index fbdd29fc88b0c6d242e05354a4264c6a6ec16cdb..a295df1d5995775c500cee526358f6410a266d00 100644
GIT binary patch
delta 27304
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

delta 26497
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
U$?Ino84B!Lbi36NieTjb0TWtCGynhq

diff --git a/Build/Compilers/ZDoom/zspecial.acs b/Build/Compilers/ZDoom/zspecial.acs
index 0030ff5c9..e9eaed559 100644
--- a/Build/Compilers/ZDoom/zspecial.acs
+++ b/Build/Compilers/ZDoom/zspecial.acs
@@ -24,12 +24,12 @@ special
 	 17:Thing_Raise(1),
 	 18:StartConversation(1,2),
 	 19:Thing_Stop(1),
-	 20:Floor_LowerByValue(3),
-	 21:Floor_LowerToLowest(2),
-	 22:Floor_LowerToNearest(2),
-	 23:Floor_RaiseByValue(3),
-	 24:Floor_RaiseToHighest(2),
-	 25:Floor_RaiseToNearest(2),
+	 20:Floor_LowerByValue(3,4),
+	 21:Floor_LowerToLowest(2,3),
+	 22:Floor_LowerToNearest(2,3),
+	 23:Floor_RaiseByValue(3,5),
+	 24:Floor_RaiseToHighest(2,5),
+	 25:Floor_RaiseToNearest(2,4),
 	 26:Stairs_BuildDown(5),
 	 27:Stairs_BuildUp(5),
 	 28:Floor_RaiseAndCrush(3,4),
@@ -39,19 +39,19 @@ special
 	 32:Stairs_BuildUpSync(4),
 	 33:ForceField(0),
 	 34:ClearForceField(1),
-	 35:Floor_RaiseByValueTimes8(3),
-	 36:Floor_LowerByValueTimes8(3),
-	 37:Floor_MoveToValue(3,4),
+	 35:Floor_RaiseByValueTimes8(3,5),
+	 36:Floor_LowerByValueTimes8(3,4),
+	 37:Floor_MoveToValue(3,5),
 	 38:Ceiling_Waggle(5),
 	 39:Teleport_ZombieChanger(2),
-	 40:Ceiling_LowerByValue(3),
-	 41:Ceiling_RaiseByValue(3),
+	 40:Ceiling_LowerByValue(3,4),
+	 41:Ceiling_RaiseByValue(3,4),
 	 42:Ceiling_CrushAndRaise(3,4),
 	 43:Ceiling_LowerAndCrush(3,4),
 	 44:Ceiling_CrushStop(1),
 	 45:Ceiling_CrushRaiseAndStay(3,4),
 	 46:Floor_CrushStop(1),
-	 47:Ceiling_MoveToValue(3,4),
+	 47:Ceiling_MoveToValue(3,5),
 //	 48:Sector_Attach3dMidtex
 	 49:GlassBreak(0,1),
 //	 50:ExtraFloor_LightOnly
@@ -70,10 +70,10 @@ special
 	 63:Plat_DownByValue(4),
 	 64:Plat_UpWaitDownStay(3),
 	 65:Plat_UpByValue(4),
-	 66:Floor_LowerInstant(3),
-	 67:Floor_RaiseInstant(3),
-	 68:Floor_MoveToValueTimes8(4),
-	 69:Ceiling_MoveToValueTimes8(4),
+	 66:Floor_LowerInstant(3,4),
+	 67:Floor_RaiseInstant(3,5),
+	 68:Floor_MoveToValueTimes8(4,5),
+	 69:Ceiling_MoveToValueTimes8(4,5),
 	 70:Teleport(1,3),
 	 71:Teleport_NoFog(1,4),
 	 72:ThrustThing(2,4),
@@ -109,6 +109,9 @@ special
 //	102:Scroll_Texture_Up
 //	103:Scroll_Texture_Down
 	104:Ceiling_CrushAndRaiseSilentDist(4,5),
+	105:Door_WaitRaise(4,5),
+	106:Door_WaitClose(3,4),
+	107:Line_SetPortalTarget(2),
 
 	109:Light_ForceLightning(1),
 	110:Light_RaiseByValue(2),
@@ -177,14 +180,14 @@ special
 	188:Sector_SetCeilingScale(5),
 	189:Sector_SetFloorScale(5),
 	191:SetPlayerProperty(3),
-	192:Ceiling_LowerToHighestFloor(2),
-	193:Ceiling_LowerInstant(3),
-	194:Ceiling_RaiseInstant(3),
+	192:Ceiling_LowerToHighestFloor(2,4),
+	193:Ceiling_LowerInstant(3,5),
+	194:Ceiling_RaiseInstant(3,4),
 	195:Ceiling_CrushRaiseAndStayA(4,5),
 	196:Ceiling_CrushAndRaiseA(4,5),
 	197:Ceiling_CrushAndRaiseSilentA(4,5),
-	198:Ceiling_RaiseByValueTimes8(3),
-	199:Ceiling_LowerByValueTimes8(3),
+	198:Ceiling_RaiseByValueTimes8(3,4),
+	199:Ceiling_LowerByValueTimes8(3,4),
 	200:Generic_Floor(5),
 	201:Generic_Ceiling(5),
 	202:Generic_Door(5),
@@ -223,9 +226,9 @@ special
 	235:Floor_TransferTrigger(1),
 	236:Floor_TransferNumeric(1),
 	237:ChangeCamera(3),
-	238:Floor_RaiseToLowestCeiling(2),
+	238:Floor_RaiseToLowestCeiling(2,4),
 	239:Floor_RaiseByValueTxTy(3),
-	240:Floor_RaiseByTexture(2),
+	240:Floor_RaiseByTexture(2,4),
 	241:Floor_LowerToLowestTxTy(2),
 	242:Floor_LowerToHighest(3,4),
 	243:Exit_Normal(1),
@@ -237,10 +240,31 @@ special
 	249:Door_CloseWaitOpen(3, 4),
 	250:Floor_Donut(3),
 	251:FloorAndCeiling_LowerRaise(3,4),
-	252:Ceiling_RaiseToNearest(2),
-	253:Ceiling_LowerToLowest(2),
-	254:Ceiling_LowerToFloor(2),
+	252:Ceiling_RaiseToNearest(2,3),
+	253:Ceiling_LowerToLowest(2,4),
+	254:Ceiling_LowerToFloor(2,4),
 	255:Ceiling_CrushRaiseAndStaySilA(4,5),
+
+	// These are specialized versions of the Generic_* specials which are defined for EE Extradata.
+	256:Floor_LowerToHighestEE(2, 3),
+	257:Floor_RaiseToLowest(2, 3),
+	258:Floor_LowerToLowestCeiling(2,3),
+	259:Floor_RaiseToCeiling(2, 4),
+	260:Floor_ToCeilingInstant(1, 3),
+	261:Floor_LowerByTexture(2, 3),
+	262:Ceiling_RaiseToHighest(2, 3),
+	263:Ceiling_ToHighestInstant(1, 3),
+	264:Ceiling_LowerToNearest(2, 4),
+	265:Ceiling_RaiseToLowest(2, 3),
+	266:Ceiling_RaiseToHighestFloor(2, 3),
+	267:Ceiling_ToFloorInstant(1, 3),
+	268:Ceiling_RaiseByTexture(2, 3),
+	269:Ceiling_LowerByTexture(2, 4),
+	270:Stairs_BuildDownDoom(5),
+	271:Stairs_BuildUpDoomSync(4),
+	272:Stairs_BuildDownDoomSync(4),
+	
+	
 	
 	// internal functions have negative values
 	-1:GetLineUDMFInt(2),
diff --git a/Source/Core/Controls/ImageBrowserControl.cs b/Source/Core/Controls/ImageBrowserControl.cs
index 469ee479d..7a0e4cd92 100644
--- a/Source/Core/Controls/ImageBrowserControl.cs
+++ b/Source/Core/Controls/ImageBrowserControl.cs
@@ -408,7 +408,7 @@ namespace CodeImp.DoomBuilder.Controls
 				int index = list.SelectedItems[0].Index;
 				int targetindex = -1;
 				ListViewGroup startgroup = list.SelectedItems[0].Group;
-				Rectangle startrect = list.GetItemRect(index, ItemBoundsPortion.Entire);
+				Rectangle startrect = list.SelectedItems[0].GetBounds(ItemBoundsPortion.Entire);
 				
 				switch(dir)
 				{
@@ -446,11 +446,15 @@ namespace CodeImp.DoomBuilder.Controls
 					case SearchDirectionHint.Up:
 						while(--index > -1)
 						{
-							Rectangle rect = list.GetItemRect(index, ItemBoundsPortion.Entire);
-							if(list.Items[index].Group == startgroup && rect.X == startrect.X && rect.Y < startrect.Y)
+							ListViewItem item = list.Items[index];
+							if(item != null && item.Group == startgroup)
 							{
-								targetindex = index;
-								break;
+								Rectangle rect = item.GetBounds(ItemBoundsPortion.Entire);
+								if(rect.X == startrect.X && rect.Y < startrect.Y)
+								{
+									targetindex = index;
+									break;
+								}
 							}
 						}
 						break;
@@ -461,11 +465,15 @@ namespace CodeImp.DoomBuilder.Controls
 						{
 							while(++index < list.Items.Count)
 							{
-								Rectangle rect = list.GetItemRect(index, ItemBoundsPortion.Entire);
-								if(list.Items[index].Group == startgroup && rect.X == startrect.X && rect.Y > startrect.Y)
+								ListViewItem item = list.Items[index];
+								if(item != null && item.Group == startgroup)
 								{
-									targetindex = index;
-									break;
+									Rectangle rect = item.GetBounds(ItemBoundsPortion.Entire);
+									if(rect.X == startrect.X && rect.Y > startrect.Y)
+									{
+										targetindex = index;
+										break;
+									}
 								}
 							}
 						}
diff --git a/Source/Core/Data/HighResImage.cs b/Source/Core/Data/HighResImage.cs
index c57d80728..4d7c65fd2 100644
--- a/Source/Core/Data/HighResImage.cs
+++ b/Source/Core/Data/HighResImage.cs
@@ -125,17 +125,26 @@ namespace CodeImp.DoomBuilder.Data
 				catch(Exception e)
 				{
 					// Unable to make bitmap
-					General.ErrorLogger.Add(ErrorType.Error, "Unable to load texture image '" + this.Name + "'. " + e.GetType().Name + ": " + e.Message);
+					General.ErrorLogger.Add(ErrorType.Error, "Unable to load texture image \"" + this.Name + "\". " + e.GetType().Name + ": " + e.Message);
 					loadfailed = true;
 				}
 
 				int missingpatches = 0; //mxd
 
-				if(!loadfailed)
+				if(patches.Count == 0) //mxd
+				{
+					// No patches!
+					General.ErrorLogger.Add(ErrorType.Warning, "No patches are defined for texture \"" + this.Name + "\"");
+					loadfailed = true;
+				}
+				else if(!loadfailed)
 				{
 					// Go for all patches
 					foreach(TexturePatch p in patches)
 					{
+						//mxd. Some patches (like "TNT1A0") should be skipped
+						if(p.skip) continue;
+						
 						// Get the patch data stream
 						Stream patchdata = General.Map.Data.GetPatchData(p.lumpname, p.haslongname);
 
@@ -161,7 +170,7 @@ namespace CodeImp.DoomBuilder.Data
 								if(reader is UnknownImageReader) 
 								{
 									// Data is in an unknown format!
-									General.ErrorLogger.Add(ErrorType.Error, "Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'");
+									General.ErrorLogger.Add(ErrorType.Error, "Patch lump \"" + p.lumpname + "\" data format could not be read, while loading texture \"" + this.Name + "\"");
 									missingpatches++; //mxd
 								}
 							}
@@ -175,7 +184,7 @@ namespace CodeImp.DoomBuilder.Data
 								catch(InvalidDataException)
 								{
 									// Data cannot be read!
-									General.ErrorLogger.Add(ErrorType.Error, "Patch lump '" + p.lumpname + "' data format could not be read, while loading texture '" + this.Name + "'");
+									General.ErrorLogger.Add(ErrorType.Error, "Patch lump \"" + p.lumpname + "\" data format could not be read, while loading texture \"" + this.Name + "\"");
 									missingpatches++; //mxd
 								}
 
@@ -217,7 +226,7 @@ namespace CodeImp.DoomBuilder.Data
 							}
 							
 							// Missing a patch lump!
-							General.ErrorLogger.Add(ErrorType.Error, "Missing patch lump '" + p.lumpname + "' while loading texture '" + this.Name + "'");
+							General.ErrorLogger.Add(ErrorType.Error, "Missing patch lump \"" + p.lumpname + "\" while loading texture \"" + this.Name + "\"");
 							missingpatches++; //mxd
 						}
 					}
@@ -282,7 +291,7 @@ namespace CodeImp.DoomBuilder.Data
 				}
 				catch(Exception e)
 				{
-					General.ErrorLogger.Add(ErrorType.Error, "Cannot lock image '" + p.lumpname + "' for alpha adjustment. " + e.GetType().Name + ": " + e.Message);
+					General.ErrorLogger.Add(ErrorType.Error, "Cannot lock image \"" + p.lumpname + "\" for alpha adjustment. " + e.GetType().Name + ": " + e.Message);
 				}
 
 				if(bmpdata != null)
@@ -347,7 +356,7 @@ namespace CodeImp.DoomBuilder.Data
 						}
 						catch(Exception e)
 						{
-							General.ErrorLogger.Add(ErrorType.Error, "Cannot lock texture '" + this.Name + "' to apply render style. " + e.GetType().Name + ": " + e.Message);
+							General.ErrorLogger.Add(ErrorType.Error, "Cannot lock texture \"" + this.Name + "\" to apply render style. " + e.GetType().Name + ": " + e.Message);
 						}
 
 						if(texturebmpdata != null)
diff --git a/Source/Core/Data/TexturePatch.cs b/Source/Core/Data/TexturePatch.cs
index cded15865..1d71d24ad 100644
--- a/Source/Core/Data/TexturePatch.cs
+++ b/Source/Core/Data/TexturePatch.cs
@@ -58,6 +58,7 @@ namespace CodeImp.DoomBuilder.Data
 		public readonly TexturePathRenderStyle style;
 		public readonly TexturePathBlendStyle blendstyle; //mxd
 		public readonly float tintammount;//mxd
+		public readonly bool skip; //mxd
 		
 		// Constructor for simple patches
 		public TexturePatch(string lumpname, int x, int y)
@@ -75,6 +76,7 @@ namespace CodeImp.DoomBuilder.Data
 			this.blendstyle = TexturePathBlendStyle.None;//mxd
 			this.tintammount = 0; //mxd
 			this.haslongname = false; //mxd
+			this.skip = false; //mxd
 		}
 
 		//mxd. Constructor for hires patches
@@ -93,6 +95,7 @@ namespace CodeImp.DoomBuilder.Data
 			this.blendstyle = patch.BlendStyle;
 			this.tintammount = patch.TintAmmount;
 			this.haslongname = (Path.GetFileNameWithoutExtension(this.lumpname) != this.lumpname);
+			this.skip = patch.Skip;
 
 			//mxd. Check data so we don't perform unneeded operations later on
 			if(this.alpha == 1.0f) 
diff --git a/Source/Core/Windows/AboutForm.cs b/Source/Core/Windows/AboutForm.cs
index bed384d7c..d8f82912c 100644
--- a/Source/Core/Windows/AboutForm.cs
+++ b/Source/Core/Windows/AboutForm.cs
@@ -60,8 +60,7 @@ namespace CodeImp.DoomBuilder.Windows
 		// This copies the version number to clipboard
 		private void copyversion_Click(object sender, EventArgs e)
 		{
-			Clipboard.Clear();
-			Clipboard.SetText(Application.ProductVersion);
+			Clipboard.SetDataObject(Application.ProductVersion, true, 5, 200); //mxd
 		}
 	}
 }
\ No newline at end of file
diff --git a/Source/Core/ZDoom/PatchStructure.cs b/Source/Core/ZDoom/PatchStructure.cs
index ebae47a66..ecd19eae2 100644
--- a/Source/Core/ZDoom/PatchStructure.cs
+++ b/Source/Core/ZDoom/PatchStructure.cs
@@ -30,23 +30,27 @@ namespace CodeImp.DoomBuilder.ZDoom
 	{
 		#region ================== Constants
 
+		// Some odd things in ZDoom
+		private const string IGNORE_SPRITE = "TNT1A0";
+
 		#endregion
 
 		#region ================== Variables
 
 		// Declaration
-		private string name;
-		private int offsetx;
-		private int offsety;
-		private bool flipx;
-		private bool flipy;
-		private float alpha;
-		private int rotation; //mxd
-		private TexturePathRenderStyle renderStyle; //mxd
-		private PixelColor blendColor; //mxd
-		private TexturePathBlendStyle blendStyle; //mxd
-		private float tintAmmount; //mxd
-		private static string[] renderStyles = { "copy", "translucent", "add", "subtract", "reversesubtract", "modulate", "copyalpha", "copynewalpha", "overlay" }; //mxd
+		private readonly string name;
+		private readonly int offsetx;
+		private readonly int offsety;
+		private readonly bool flipx;
+		private readonly bool flipy;
+		private readonly float alpha;
+		private readonly int rotation; //mxd
+		private readonly TexturePathRenderStyle renderStyle; //mxd
+		private readonly PixelColor blendColor; //mxd
+		private readonly TexturePathBlendStyle blendStyle; //mxd
+		private readonly float tintAmmount; //mxd
+		private static readonly string[] renderStyles = { "copy", "translucent", "add", "subtract", "reversesubtract", "modulate", "copyalpha", "copynewalpha", "overlay" }; //mxd
+		private readonly bool skip; //mxd
 
 		#endregion
 
@@ -63,6 +67,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 		public TexturePathBlendStyle BlendStyle { get { return blendStyle; } }
 		public float TintAmmount { get { return tintAmmount; } }
 		public PixelColor BlendColor { get { return blendColor; } }//mxd
+		public bool Skip { get { return skip; } } //mxd
 
 		#endregion
 
@@ -88,6 +93,9 @@ namespace CodeImp.DoomBuilder.ZDoom
 				return;
 			}
 
+			//mxd. Skip what must be skipped
+			skip = (name.ToUpperInvariant() == IGNORE_SPRITE);
+
 			//mxd
 			name = name.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
 
diff --git a/Source/Core/ZDoom/TextureStructure.cs b/Source/Core/ZDoom/TextureStructure.cs
index 52df44dfe..88c2817cf 100644
--- a/Source/Core/ZDoom/TextureStructure.cs
+++ b/Source/Core/ZDoom/TextureStructure.cs
@@ -28,9 +28,6 @@ namespace CodeImp.DoomBuilder.ZDoom
 	{
 		#region ================== Constants
 
-		// Some odd thing in ZDoom
-		private const string IGNORE_SPRITE = "TNT1A0";
-
 		#endregion
 
 		#region ================== Variables
@@ -169,9 +166,6 @@ namespace CodeImp.DoomBuilder.ZDoom
 						PatchStructure pt = new PatchStructure(parser);
 						if(parser.HasError) break;
 
-						//mxd. Let's ignore TNT1A0
-						if(pt.Name == IGNORE_SPRITE) break;
-
 						// Add the patch
 						patches.Add(pt);
 						break;
@@ -200,7 +194,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 				// Try parsing as value
 				if(!float.TryParse(strvalue, NumberStyles.Float, CultureInfo.InvariantCulture, out value))
 				{
-					parser.ReportError("Expected numeric value for property '" + propertyname + "'");
+					parser.ReportError("Expected numeric value for property \"" + propertyname + "\"");
 					return false;
 				}
 
@@ -209,7 +203,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 			}
 
 			// Can't find the property value!
-			parser.ReportError("Expected a value for property '" + propertyname + "'");
+			parser.ReportError("Expected a value for property \"" + propertyname + "\"");
 			value = 0.0f;
 			return false;
 		}
@@ -225,7 +219,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 				// Try parsing as value
 				if(!int.TryParse(strvalue, NumberStyles.Integer, CultureInfo.InvariantCulture, out value))
 				{
-					parser.ReportError("Expected integral value for property '" + propertyname + "'");
+					parser.ReportError("Expected integral value for property \"" + propertyname + "\"");
 					return false;
 				}
 
@@ -234,7 +228,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 			}
 
 			// Can't find the property value!
-			parser.ReportError("Expected a value for property '" + propertyname + "'");
+			parser.ReportError("Expected a value for property \"" + propertyname + "\"");
 			value = 0;
 			return false;
 		}
diff --git a/Source/Plugins/BuilderModes/Interface/ErrorCheckForm.cs b/Source/Plugins/BuilderModes/Interface/ErrorCheckForm.cs
index 7061ae28d..6f1d88942 100644
--- a/Source/Plugins/BuilderModes/Interface/ErrorCheckForm.cs
+++ b/Source/Plugins/BuilderModes/Interface/ErrorCheckForm.cs
@@ -749,7 +749,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			foreach(ErrorResult result in results.SelectedItems) sb.AppendLine(result.ToString());
 
 			// Set on clipboard
-			Clipboard.SetText(sb.ToString());
+			Clipboard.SetDataObject(sb.ToString(), true, 5, 200); //mxd
 
 			// Inform the user
 			General.Interface.DisplayStatus(StatusType.Info, "Analysis results copied to clipboard.");
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSector.cs
index 327ff7163..7a8730a5d 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSector.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSector.cs
@@ -35,14 +35,14 @@ namespace CodeImp.DoomBuilder.BuilderModes
 
 		#region ================== Variables
 		
-		private BaseVisualMode mode;
+		private readonly BaseVisualMode mode;
 
 		private VisualFloor floor;
 		private VisualCeiling ceiling;
 		private List<VisualFloor> extrafloors;
 		private List<VisualCeiling> extraceilings;
-		private List<VisualFloor> extrabackfloors; //mxd
-		private List<VisualCeiling> extrabackceilings; //mxd
+		private readonly List<VisualFloor> extrabackfloors; //mxd
+		private readonly List<VisualCeiling> extrabackceilings; //mxd
 		private Dictionary<Sidedef, VisualSidedefParts> sides;
 		
 		// If this is set to true, the sector will be rebuilt after the action is performed.
@@ -130,7 +130,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				if(mode.VisualSectorExists(s.Key))
 				{
 					BaseVisualSector vs = (BaseVisualSector)mode.GetVisualSector(s.Key);
-					vs.UpdateSectorGeometry(s.Value);
+					vs.Changed = true;
 				}
 			}
 			
diff --git a/Source/Plugins/BuilderModes/VisualModes/SectorData.cs b/Source/Plugins/BuilderModes/VisualModes/SectorData.cs
index 6ac4eef14..62ee0f7c6 100644
--- a/Source/Plugins/BuilderModes/VisualModes/SectorData.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/SectorData.cs
@@ -109,6 +109,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			Effect3DFloor e = new Effect3DFloor(this, sourcelinedef);
 			extrafloors.Add(e);
 			alleffects.Add(e);
+
+			//mxd. Extrafloor neighbours should be updated when extrafloor is changed
+			foreach(Sidedef sd in this.Sector.Sidedefs)
+			{
+				if(sd.Other != null && sd.Other.Sector != null)
+					AddUpdateSector(sd.Other.Sector, false);
+			}
 		}
 		
 		// Brightness level effect
-- 
GitLab