From 03eb1a5d563336a047341d92086c5fb1e7994ff1 Mon Sep 17 00:00:00 2001
From: toasterbabe <rollerorbital@gmail.com>
Date: Sat, 29 Apr 2017 16:40:07 +0100
Subject: [PATCH] * Make no results instead of generic search search message.
 https://cdn.discordapp.com/attachments/293238104096112641/310153659356938241/srb20007.png
 * Page up and page down now work!

---
 src/filesrch.c | 10 +++++++---
 src/filesrch.h |  2 +-
 src/m_menu.c   | 43 ++++++++++++++++++++++++++++++-------------
 3 files changed, 38 insertions(+), 17 deletions(-)

diff --git a/src/filesrch.c b/src/filesrch.c
index 190913a5ea..e9e34e3e92 100644
--- a/src/filesrch.c
+++ b/src/filesrch.c
@@ -588,10 +588,11 @@ boolean preparefilemenu(boolean samedepth)
 		return false;
 	}
 
-	if (menusearch[0] || menudepthleft != menudepth-1) // Make room for UP... or search entry
+	if ((menusearch[0] && !sizedirmenu)
+		|| (!menusearch[0] && menudepthleft != menudepth-1)) // Make room for UP... or search entry
 	{
-		numfolders++;
 		sizedirmenu++;
+		numfolders++;
 		folderpos++;
 	}
 
@@ -683,7 +684,10 @@ boolean preparefilemenu(boolean samedepth)
 	}
 
 	if (menusearch[0])
-		dirmenu[0] = Z_StrDup(va("%c\14Search results", EXT_SEARCH));
+	{
+		if (!pos && folderpos == 1)
+			dirmenu[0] = Z_StrDup(va("%c\13No results...", EXT_NORESULTS));
+	}
 	else if (menudepthleft != menudepth-1) // now for UP... entry
 		dirmenu[0] = Z_StrDup(va("%c\5UP...", EXT_UP));
 
diff --git a/src/filesrch.h b/src/filesrch.h
index ff3a6ca504..1e05750bd6 100644
--- a/src/filesrch.h
+++ b/src/filesrch.h
@@ -46,7 +46,7 @@ typedef enum
 {
 	EXT_FOLDER = 0,
 	EXT_UP,
-	EXT_SEARCH,
+	EXT_NORESULTS,
 	EXT_START,
 	EXT_TXT = EXT_START,
 	EXT_CFG,
diff --git a/src/m_menu.c b/src/m_menu.c
index 7e25746693..8688080ce6 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -334,7 +334,9 @@ static void M_ScreenshotOptions(INT32 choice);
 static void M_EraseData(INT32 choice);
 
 static void M_Addons(INT32 choice);
-static patch_t *addonsp[NUM_EXT+3];
+static patch_t *addonsp[NUM_EXT+4];
+
+#define numaddonsshown 4
 
 // Drawing functions
 static void M_DrawGenericMenu(void);
@@ -4468,21 +4470,22 @@ static void M_Addons(INT32 choice)
 	if (addonsp[0]) // never going to have some provided but not all, saves individually checking
 	{
 		size_t i;
-		for (i = 0; i < NUM_EXT+3; i++)
+		for (i = 0; i < NUM_EXT+4; i++)
 			W_UnlockCachedPatch(addonsp[i]);
 	}
 
 	addonsp[EXT_FOLDER] = W_CachePatchName("M_FFLDR", PU_STATIC);
 	addonsp[EXT_UP] = W_CachePatchName("M_FBACK", PU_STATIC);
-	addonsp[EXT_SEARCH] = W_CachePatchName("M_FSRCH", PU_STATIC);
+	addonsp[EXT_NORESULTS] = W_CachePatchName("M_FNOPE", PU_STATIC);
 	addonsp[EXT_TXT] = W_CachePatchName("M_FTXT", PU_STATIC);
 	addonsp[EXT_CFG] = W_CachePatchName("M_FCFG", PU_STATIC);
 	addonsp[EXT_WAD] = W_CachePatchName("M_FWAD", PU_STATIC);
 	addonsp[EXT_SOC] = W_CachePatchName("M_FSOC", PU_STATIC);
 	addonsp[EXT_LUA] = W_CachePatchName("M_FLUA", PU_STATIC);
-	addonsp[NUM_EXT] = W_CachePatchName("M_FLOAD", PU_STATIC);
-	addonsp[NUM_EXT+1] = W_CachePatchName("M_FSEL1", PU_STATIC);
-	addonsp[NUM_EXT+2] = W_CachePatchName("M_FSEL2", PU_STATIC);
+	addonsp[NUM_EXT] = W_CachePatchName("M_FSEL1", PU_STATIC);
+	addonsp[NUM_EXT+1] = W_CachePatchName("M_FSEL2", PU_STATIC);
+	addonsp[NUM_EXT+2] = W_CachePatchName("M_FLOAD", PU_STATIC);
+	addonsp[NUM_EXT+3] = W_CachePatchName("M_FSRCH", PU_STATIC);
 
 	MISC_AddonsDef.prevMenu = currentMenu;
 	M_SetupNextMenu(&MISC_AddonsDef);
@@ -4620,14 +4623,13 @@ static void M_DrawAddons(void)
 
 	M_DrawLevelPlatterHeader(y - 16, M_AddonsHeaderPath(), true);
 
-#define numaddonsshown 5
 	// get bottom...
-	max = dir_on[menudepthleft] + numaddonsshown;
+	max = dir_on[menudepthleft] + numaddonsshown + 1;
 	if (max > (ssize_t)sizedirmenu)
 		max = sizedirmenu;
 
 	// then top...
-	i = max - (2*numaddonsshown - 1);
+	i = max - (2*numaddonsshown + 1);
 
 	// then adjust!
 	if (i < 0)
@@ -4636,7 +4638,6 @@ static void M_DrawAddons(void)
 			max = sizedirmenu;
 		i = 0;
 	}
-#undef numaddonsshown
 
 	if (i != 0)
 		V_DrawCharacter(19, y+4, '\x1A', false);
@@ -4653,11 +4654,11 @@ static void M_DrawAddons(void)
 			V_DrawSmallScaledPatch(x-(16+4), y, (flags & V_TRANSLUCENT), addonsp[((UINT8)(dirmenu[i][DIR_TYPE]) & ~EXT_LOADED)]);
 
 			if (dirmenu[i][DIR_TYPE] & EXT_LOADED)
-				V_DrawSmallScaledPatch(x-(16+4), y, 0, addonsp[NUM_EXT]);
+				V_DrawSmallScaledPatch(x-(16+4), y, 0, addonsp[NUM_EXT+2]);
 
 			if ((size_t)i == dir_on[menudepthleft])
 			{
-				tic_t flash = ((skullAnimCounter & 4) ? 2 : 1);
+				tic_t flash = ((skullAnimCounter/4) ? 1 : 0);
 				V_DrawSmallScaledPatch(x-(16+4), y, 0, addonsp[NUM_EXT+flash]);
 			}
 
@@ -4676,7 +4677,7 @@ static void M_DrawAddons(void)
 
 	y = BASEVIDHEIGHT - currentMenu->y;
 
-	V_DrawSmallScaledPatch(x-(26 + 16), y + 4, 0, addonsp[EXT_SEARCH]);
+	V_DrawSmallScaledPatch(x-(26 + 16), y + 4, 0, addonsp[NUM_EXT+3]);
 	M_DrawTextBox(x - 26, y, MAXSTRINGLENGTH, 1);
 	V_DrawString(x - 18, y + 8, V_ALLOWLOWERCASE, menusearch+1);
 	if (skullAnimCounter < 4)
@@ -4749,6 +4750,22 @@ static void M_HandleAddons(INT32 choice)
 				dir_on[menudepthleft]--;
 			S_StartSound(NULL, sfx_menu1);
 			break;
+		case KEY_PGDN:
+			{
+				UINT8 i;
+				for (i = numaddonsshown; i && (dir_on[menudepthleft] < sizedirmenu-1); i--)
+					dir_on[menudepthleft]++;
+			}
+			S_StartSound(NULL, sfx_menu1);
+			break;
+		case KEY_PGUP:
+			{
+				UINT8 i;
+				for (i = numaddonsshown; i && (dir_on[menudepthleft]); i--)
+					dir_on[menudepthleft]--;
+			}
+			S_StartSound(NULL, sfx_menu1);
+			break;
 		case KEY_ENTER:
 			{
 				boolean refresh = true;
-- 
GitLab