From a006a3cbc3814a02bbc05f62090a9b929a8c15e5 Mon Sep 17 00:00:00 2001
From: MaxED <j.maxed@gmail.com>
Date: Sun, 21 Feb 2016 23:07:51 +0000
Subject: [PATCH] Added, "Find Thing Action and Arguments" search mode: "Any
 action" (-1) can now be used as a search input. Fixed, "Find Linedef Action
 and Arguments" and "Find Sector Effect" search modes: in some cases
 action/effect was checked incorrectly when performing a search.

---
 .../BuilderModes/FindReplace/FindLinedefTypes.cs  |  4 ++--
 .../BuilderModes/FindReplace/FindSectorEffect.cs  |  4 ++--
 .../BuilderModes/FindReplace/FindThingAction.cs   | 15 ++++++++++-----
 3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/Source/Plugins/BuilderModes/FindReplace/FindLinedefTypes.cs b/Source/Plugins/BuilderModes/FindReplace/FindLinedefTypes.cs
index b8c8f9309..830423b85 100644
--- a/Source/Plugins/BuilderModes/FindReplace/FindLinedefTypes.cs
+++ b/Source/Plugins/BuilderModes/FindReplace/FindLinedefTypes.cs
@@ -173,8 +173,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				// Go for all linedefs
 				foreach(Linedef l in list)
 				{
-					// Action matches?
-					if((action == -1 && l.Action < 1) || l.Action != action && !BitsMatch(l.Action, expectedbits)) continue;
+					// Action matches? -1 means any action (mxd)
+					if((action == -1 && l.Action == 0) || (action > -1 && (l.Action != action && !BitsMatch(l.Action, expectedbits)))) continue;
 
 					bool match = true;
 					string argtext = "";
diff --git a/Source/Plugins/BuilderModes/FindReplace/FindSectorEffect.cs b/Source/Plugins/BuilderModes/FindReplace/FindSectorEffect.cs
index 786294eb9..7d93a6419 100644
--- a/Source/Plugins/BuilderModes/FindReplace/FindSectorEffect.cs
+++ b/Source/Plugins/BuilderModes/FindReplace/FindSectorEffect.cs
@@ -101,8 +101,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				// Go for all sectors
 				foreach(Sector s in list)
 				{
-					// Effect matches?
-					if((effect == -1 && s.Effect > 0) || s.Effect == effect || BitsMatch(s.Effect, expectedbits))
+					// Effect matches? -1 means any effect (mxd)
+					if((effect == -1 && s.Effect > 0) || (effect > -1 && (s.Effect == effect || BitsMatch(s.Effect, expectedbits))))
 					{
 						// Replace
 						if(replace) s.Effect = replaceeffect;
diff --git a/Source/Plugins/BuilderModes/FindReplace/FindThingAction.cs b/Source/Plugins/BuilderModes/FindReplace/FindThingAction.cs
index dd1076f00..f83e72ab5 100644
--- a/Source/Plugins/BuilderModes/FindReplace/FindThingAction.cs
+++ b/Source/Plugins/BuilderModes/FindReplace/FindThingAction.cs
@@ -60,16 +60,21 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			return General.Map.FormatInterface.HasThingAction;
 		}
 
-
 		// This is called when the browse button is pressed
 		public override string Browse(string initialvalue)
 		{
 			int action;
 			int.TryParse(initialvalue, out action);
-			action = General.Interface.BrowseLinedefActions(BuilderPlug.Me.FindReplaceForm, action);
-			return action.ToString();
+			return General.Interface.BrowseLinedefActions(BuilderPlug.Me.FindReplaceForm, action, true).ToString();
 		}
 
+		// This is called when the browse replace button is pressed
+		public override string BrowseReplace(string initialvalue)
+		{
+			int action;
+			int.TryParse(initialvalue, out action);
+			return General.Interface.BrowseLinedefActions(BuilderPlug.Me.FindReplaceForm, action).ToString();
+		}
 
 		// This is called to perform a search (and replace)
 		// Returns a list of items to show in the results list
@@ -172,8 +177,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				// Go for all things
 				foreach(Thing t in list) 
 				{
-					// Action matches?
-					if(t.Action != action) continue;
+					// Action matches? -1 means any action (mxd)
+					if((action == -1 && t.Action == 0) || (action > -1 && t.Action != action)) continue;
 
 					bool match = true;
 					string argtext = "";
-- 
GitLab