From e0b7af81a4f71f1e0515d45043d5b95fc7875e55 Mon Sep 17 00:00:00 2001
From: MaxED <j.maxed@gmail.com>
Date: Mon, 29 Jul 2013 12:01:06 +0000
Subject: [PATCH] Visual mode: fixed a crash while changing 3d floor texture
 offsets when visual sector was not created for 3d floor's control sector.
 Visual mode: Info/Warning/Error status messages were not displayed properly
 when nothing was selected. Sector Edit form, UDMF: Reset and Link buttons
 were overlapped in Floor/Ceiling scale controls.

---
 .../GZBuilder/Controls/PairedFieldsControl.cs    |  6 +++---
 Source/Core/VisualModes/VisualMode.cs            |  4 ++--
 Source/Core/Windows/MainForm.cs                  | 16 +++++++++-------
 Source/Core/Windows/SectorEditFormUDMF.resx      |  9 ---------
 .../BuilderModes/VisualModes/BaseVisualMode.cs   |  7 ++-----
 5 files changed, 16 insertions(+), 26 deletions(-)

diff --git a/Source/Core/GZBuilder/Controls/PairedFieldsControl.cs b/Source/Core/GZBuilder/Controls/PairedFieldsControl.cs
index 0321e47f2..2adf46840 100644
--- a/Source/Core/GZBuilder/Controls/PairedFieldsControl.cs
+++ b/Source/Core/GZBuilder/Controls/PairedFieldsControl.cs
@@ -26,7 +26,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
 		private bool allowValueLinking;
 		private bool linkValues;
 		private bool blockUpdate;
-		private int bResetPosX;
+		private int bResetOffsetX;
 
 		#endregion
 
@@ -48,7 +48,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
 
 		public PairedFieldsControl() {
 			InitializeComponent();
-			bResetPosX = bReset.Left;
+			bResetOffsetX = this.Width - bReset.Left;
 		}
 
 		#endregion
@@ -114,7 +114,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
 			if(!allowValueLinking) {
 				bReset.Left = bLink.Left;
 			} else {
-				bReset.Left = bResetPosX;
+				bReset.Left = this.Width - bResetOffsetX;
 				bLink.Image = (linkValues ? Resources.Link : Resources.Unlink);
 			}
 		}
diff --git a/Source/Core/VisualModes/VisualMode.cs b/Source/Core/VisualModes/VisualMode.cs
index 3061f4079..d128395ac 100644
--- a/Source/Core/VisualModes/VisualMode.cs
+++ b/Source/Core/VisualModes/VisualMode.cs
@@ -604,7 +604,7 @@ namespace CodeImp.DoomBuilder.VisualModes
 			{
 				// Make new visualsector
 				vs = CreateVisualSector(sd.Sector);
-				if(vs != null) allsectors.Add(sd.Sector, vs);
+				//if(vs != null) allsectors.Add(sd.Sector, vs); //mxd
 			}
 			
 			if(vs != null)
@@ -942,7 +942,7 @@ namespace CodeImp.DoomBuilder.VisualModes
 		/// This returns the VisualSector for the given Sector.
 		/// </summary>
 		public VisualSector GetVisualSector(Sector s) {
-			if(!allsectors.ContainsKey(s)) return null; //mxd
+			if(!allsectors.ContainsKey(s)) return CreateVisualSector(s); //mxd
 			return allsectors[s]; 
 		}
 		
diff --git a/Source/Core/Windows/MainForm.cs b/Source/Core/Windows/MainForm.cs
index 4c1b76cfb..5ba9e247e 100644
--- a/Source/Core/Windows/MainForm.cs
+++ b/Source/Core/Windows/MainForm.cs
@@ -667,7 +667,7 @@ namespace CodeImp.DoomBuilder.Windows
 		public void DisplayStatus(StatusInfo newstatus)
 		{
 			// Stop timers
-			if(!newstatus.displayed)
+			if(newstatus.type != StatusType.Selection && !newstatus.displayed) //mxd
 			{
 				statusresetter.Stop();
 				statusflasher.Stop();
@@ -680,16 +680,18 @@ namespace CodeImp.DoomBuilder.Windows
 				// When no particular information is to be displayed.
 				// The messages displayed depends on running background processes.
 				case StatusType.Ready:
-					if((General.Map != null) && (General.Map.Data != null))
-						if(General.Map.Data.IsLoading)
-							newstatus.message = STATUS_LOADING_TEXT;
-						else
-							newstatus.message = selectionInfo; //mxd
-					else
+					if ((General.Map != null) && (General.Map.Data != null)) {
+						newstatus.message = General.Map.Data.IsLoading ? STATUS_LOADING_TEXT : selectionInfo;
+					} else {
 						newstatus.message = STATUS_READY_TEXT;
+					}
 					break;
 
 				case StatusType.Selection: //mxd
+					if (statusresetter.Enabled) { //don't change the message right now if info or warning is displayed
+						selectionInfo = (string.IsNullOrEmpty(newstatus.message) ? STATUS_NO_SELECTION_TEXT : newstatus.message);
+						return;
+					}
 					if(string.IsNullOrEmpty(newstatus.message))
 						newstatus.message = STATUS_NO_SELECTION_TEXT;
 					selectionInfo = newstatus.message;
diff --git a/Source/Core/Windows/SectorEditFormUDMF.resx b/Source/Core/Windows/SectorEditFormUDMF.resx
index f3e8e41bc..53aec6270 100644
--- a/Source/Core/Windows/SectorEditFormUDMF.resx
+++ b/Source/Core/Windows/SectorEditFormUDMF.resx
@@ -147,12 +147,6 @@
   <metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>False</value>
   </metadata>
-  <metadata name="label6.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>False</value>
-  </metadata>
-  <metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>False</value>
-  </metadata>
   <metadata name="tabproperties.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
@@ -162,7 +156,4 @@
   <metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
 </root>
\ No newline at end of file
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
index 51f96cc2e..ecaa54387 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
@@ -378,6 +378,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		protected override VisualSector CreateVisualSector(Sector s)
 		{
 			BaseVisualSector vs = new BaseVisualSector(this, s);
+			if (vs != null) allsectors.Add(s, vs); //mxd
 			return vs;
 		}
 		
@@ -501,11 +502,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
         //mxd
         protected override void moveSelectedThings(Vector2D direction, bool absolutePosition) {
             List<VisualThing> visualThings = GetSelectedVisualThings(true);
-
-            if (visualThings.Count == 0) {
-                General.Interface.DisplayStatus(StatusType.Warning, "Select some Things first!");
-                return;
-            }
+            if (visualThings.Count == 0) return;
 
             PreAction(UndoGroup.ThingMove);
 
-- 
GitLab