From 04ee4717b4a9751ac87a24ffe8d1e92ab3a54140 Mon Sep 17 00:00:00 2001
From: MaxED <j.maxed@gmail.com>
Date: Mon, 26 Aug 2013 10:51:33 +0000
Subject: [PATCH] Set Default Textures: empty textures can now be used as
 default ones. Sector Edit forms: floor/ceiling textures can be cleared with
 right-click on texture selectors.

---
 Source/Core/Config/ProgramConfiguration.cs     |  4 ++--
 Source/Core/Controls/ImageSelectorControl.cs   |  5 ++---
 Source/Core/Controls/TextureSelectorControl.cs |  1 -
 Source/Core/Windows/SetDefaultTexturesForm.cs  | 12 +++---------
 4 files changed, 7 insertions(+), 15 deletions(-)

diff --git a/Source/Core/Config/ProgramConfiguration.cs b/Source/Core/Config/ProgramConfiguration.cs
index c8263f677..264a5c33a 100644
--- a/Source/Core/Config/ProgramConfiguration.cs
+++ b/Source/Core/Config/ProgramConfiguration.cs
@@ -545,13 +545,13 @@ namespace CodeImp.DoomBuilder.Config
 			if(General.Map == null) return;
 			
 			// Default texture missing?
-			if((defaulttexture == null) || defaulttexture.StartsWith("-"))
+			if(defaulttexture == null || (!gzForceDefaultTextures && defaulttexture == "-")) //mxd
 			{
 				// Find default texture from map
 				foundone = false;
 				foreach(Sidedef sd in General.Map.Map.Sidedefs)
 				{
-					if(!sd.MiddleTexture.StartsWith("-"))
+					if(sd.MiddleTexture != "-")
 					{
 						defaulttexture = sd.MiddleTexture;
 						if(General.Map.Data.GetTextureExists(defaulttexture))
diff --git a/Source/Core/Controls/ImageSelectorControl.cs b/Source/Core/Controls/ImageSelectorControl.cs
index d58520c4c..07997a93f 100644
--- a/Source/Core/Controls/ImageSelectorControl.cs
+++ b/Source/Core/Controls/ImageSelectorControl.cs
@@ -37,7 +37,6 @@ namespace CodeImp.DoomBuilder.Controls
 		private Bitmap bmp;
 		private bool ismouseinside;
 		private MouseButtons button;
-		protected bool allowclear;
 		private string previousImageName; //mxd
 		
 		#endregion
@@ -92,7 +91,7 @@ namespace CodeImp.DoomBuilder.Controls
 			ShowPreview(FindImage(name.Text));
 			if(button == MouseButtons.Right)
 			{
-				if(allowclear) name.Text = "-";
+				name.Text = "-";
 			}
 			else if(button == MouseButtons.Left)
 			{
@@ -111,7 +110,7 @@ namespace CodeImp.DoomBuilder.Controls
 		private void preview_MouseDown(object sender, MouseEventArgs e)
 		{
 			button = e.Button;
-			if((button == MouseButtons.Left) || ((button == MouseButtons.Right) && allowclear))
+			if((button == MouseButtons.Left) || ((button == MouseButtons.Right)))
 			{
 				//ispressed = true;
 				preview.BackColor = AdjustedColor(SystemColors.Highlight, 0.2f);
diff --git a/Source/Core/Controls/TextureSelectorControl.cs b/Source/Core/Controls/TextureSelectorControl.cs
index 42a3d8d2e..fa43f0197 100644
--- a/Source/Core/Controls/TextureSelectorControl.cs
+++ b/Source/Core/Controls/TextureSelectorControl.cs
@@ -39,7 +39,6 @@ namespace CodeImp.DoomBuilder.Controls
 			
 			// Fill autocomplete list
 			name.AutoCompleteCustomSource.AddRange(General.Map.Data.TextureNames.ToArray());
-			allowclear = true;
 		}
 		
 		// This finds the image we need for the given texture name
diff --git a/Source/Core/Windows/SetDefaultTexturesForm.cs b/Source/Core/Windows/SetDefaultTexturesForm.cs
index 69c6b7214..a40edc3c0 100644
--- a/Source/Core/Windows/SetDefaultTexturesForm.cs
+++ b/Source/Core/Windows/SetDefaultTexturesForm.cs
@@ -27,15 +27,9 @@ namespace CodeImp.DoomBuilder.Windows
 		}
 
 		private void bApply_Click(object sender, EventArgs e) {
-			if(General.Map.Data.GetTextureExists(ceiling.TextureName))
-				General.Settings.DefaultCeilingTexture = ceiling.TextureName;
-
-			if(General.Map.Data.GetTextureExists(floor.TextureName))
-				General.Settings.DefaultFloorTexture = floor.TextureName;
-
-			if(General.Map.Data.GetTextureExists(walls.TextureName))
-				General.Settings.DefaultTexture = walls.TextureName;
-
+			General.Settings.DefaultCeilingTexture = string.IsNullOrEmpty(ceiling.TextureName) ? "-" : ceiling.TextureName;
+			General.Settings.DefaultFloorTexture = string.IsNullOrEmpty(floor.TextureName) ? "-" : floor.TextureName;
+			General.Settings.DefaultTexture = string.IsNullOrEmpty(walls.TextureName) ? "-" : walls.TextureName;
 			General.Settings.GZForceDefaultTextures = cbForceDefault.Checked;
 			Close();
 		}
-- 
GitLab