From 1fc835e4a36e829a16f99f23bc4c42de5aaf4ad9 Mon Sep 17 00:00:00 2001
From: toasterbabe <rollerorbital@gmail.com>
Date: Mon, 8 May 2017 17:28:48 +0100
Subject: [PATCH] Made the refreshdirmenu stuff SLIGHTLY less hacky.

---
 src/filesrch.h | 3 ++-
 src/m_menu.c   | 5 +++--
 src/p_setup.c  | 3 +++
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/filesrch.h b/src/filesrch.h
index dafde07cdf..e9092b5906 100644
--- a/src/filesrch.h
+++ b/src/filesrch.h
@@ -82,7 +82,8 @@ typedef enum
 	REFRESHDIR_ADDFILE = 2,
 	REFRESHDIR_WARNING = 4,
 	REFRESHDIR_ERROR = 8,
-	REFRESHDIR_MAX = 16
+	REFRESHDIR_NOTLOADED = 16,
+	REFRESHDIR_MAX = 32
 } refreshdir_enum;
 
 boolean preparefilemenu(boolean samedepth);
diff --git a/src/m_menu.c b/src/m_menu.c
index 6ba7fac375..3712c863fe 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -4810,7 +4810,9 @@ static boolean M_AddonsRefresh(void)
 
 	if (refreshdirmenu & REFRESHDIR_ADDFILE)
 	{
-		if (!(dirmenu[dir_on[menudepthleft]][DIR_TYPE] & EXT_LOADED))
+		addonsresponselimit = 0;
+
+		if (refreshdirmenu & REFRESHDIR_NOTLOADED)
 		{
 			char *message = NULL;
 			S_StartSound(NULL, sfx_lose);
@@ -4946,7 +4948,6 @@ static void M_AddonExec(INT32 ch)
 
 	S_StartSound(NULL, sfx_strpst);
 	COM_BufAddText(va("exec %s%s", menupath, dirmenu[dir_on[menudepthleft]]+DIR_STRING));
-	addonsresponselimit = 5;
 }
 
 #define len menusearch[0]
diff --git a/src/p_setup.c b/src/p_setup.c
index 02a6218451..c7f247ccdc 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -54,6 +54,8 @@
 
 #include "v_video.h"
 
+#include "filesrch.h" // refreshdirmenu
+
 // wipes
 #include "f_finale.h"
 
@@ -3054,6 +3056,7 @@ boolean P_AddWadFile(const char *wadfilename, char **firstmapname)
 
 	if ((numlumps = W_LoadWadFile(wadfilename)) == INT16_MAX)
 	{
+		refreshdirmenu |= REFRESHDIR_NOTLOADED;
 		CONS_Printf(M_GetText("Errors occured while loading %s; not added.\n"), wadfilename);
 		return false;
 	}
-- 
GitLab