From 81ec45d1f9d14b7a2140080670fd70d425b577fa Mon Sep 17 00:00:00 2001
From: Rye Cogtail <rye@alchemyviewer.org>
Date: Sat, 20 May 2023 23:43:02 -0400
Subject: [PATCH] Build fixes

---
 indra/newview/llfilepicker.cpp | 89 ++++++++++++++++++----------------
 1 file changed, 47 insertions(+), 42 deletions(-)

diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index a17cf494165..8c1e16a0936 100644
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -69,6 +69,7 @@ LLFilePicker LLFilePicker::sInstance;
 #define SCRIPT_FILTER L"Script files (*.lsl)\0*.lsl\0"
 #define DICTIONARY_FILTER L"Dictionary files (*.dic; *.xcu)\0*.dic;*.xcu\0"
 #define ZIP_FILTER L"ZIP files (*.zip)\0*.zip\0"
+#define EXECUTABLE_FILTER L"Executables (*.exe)\0*.exe\0"
 #endif
 
 #ifdef LL_DARWIN
@@ -178,54 +179,55 @@ std::vector<nfdfilteritem_t> LLFilePicker::setupFilter(ELoadFilter filter)
 	switch (filter)
 	{
     case FFLOAD_ALL:
+    	break;
     case FFLOAD_EXE:
-		filter_vec.emplace_back("Sounds", "wav");
-		filter_vec.emplace_back("Images", "tga,bmp,jpg,jpeg,png,webp");
-		filter_vec.emplace_back("Animations", "bvh,anim");
+#if LL_WINDOWS
+   		filter_vec.emplace_back(nfdfilteritem_t{"Executables", "exe"});
+#endif
 		break;
 	case FFLOAD_WAV:
-		filter_vec.emplace_back("Sounds", "wav");
+		filter_vec.emplace_back(nfdfilteritem_t{"Sounds", "wav"});
 		break;
 	case FFLOAD_IMAGE:
-		filter_vec.emplace_back("Images", "tga,bmp,jpg,jpeg,png,webp");
+		filter_vec.emplace_back(nfdfilteritem_t{"Images", "tga,bmp,jpg,jpeg,png,webp"});
 		break;
 	case FFLOAD_ANIM:
-		filter_vec.emplace_back("Animations", "bvh,anim");
+		filter_vec.emplace_back(nfdfilteritem_t{"Animations", "bvh,anim"});
 		break;
     case FFLOAD_GLTF:
-		filter_vec.emplace_back("GLTF Files", "gltf,glb");
+		filter_vec.emplace_back(nfdfilteritem_t{"GLTF Files", "gltf,glb"});
         break;
 	case FFLOAD_COLLADA:
-		filter_vec.emplace_back("Scene", "dae");
+		filter_vec.emplace_back(nfdfilteritem_t{"Scene", "dae"});
 		break;
 	case FFLOAD_XML:
-		filter_vec.emplace_back("XML files", "xml");
+		filter_vec.emplace_back(nfdfilteritem_t{"XML files", "xml"});
 		break;
 	case FFLOAD_SLOBJECT:
-		filter_vec.emplace_back("Objects", "slobject");
+		filter_vec.emplace_back(nfdfilteritem_t{"Objects", "slobject"});
 		break;
 	case FFLOAD_RAW:
-		filter_vec.emplace_back("RAW files", "raw");
+		filter_vec.emplace_back(nfdfilteritem_t{"RAW files", "raw"});
 		break;
 	case FFLOAD_MODEL:
-		filter_vec.emplace_back("Model files", "dae");
+		filter_vec.emplace_back(nfdfilteritem_t{"Model files", "dae"});
 		break;
     case FFLOAD_MATERIAL:
-		filter_vec.emplace_back("GLTF Files", "gltf,glb");
+		filter_vec.emplace_back(nfdfilteritem_t{"GLTF Files", "gltf,glb"});
         break;
     case FFLOAD_MATERIAL_TEXTURE:
-		filter_vec.emplace_back("GLTF Import", "gltf,glb,tga,bmp,jpg,jpeg,png");
-		filter_vec.emplace_back("GLTF Files", "gltf,glb");
-		filter_vec.emplace_back("Images", "tga,bmp,jpg,jpeg,png,webp");
+		filter_vec.emplace_back(nfdfilteritem_t{"GLTF Import", "gltf,glb,tga,bmp,jpg,jpeg,png"});
+		filter_vec.emplace_back(nfdfilteritem_t{"GLTF Files", "gltf,glb"});
+		filter_vec.emplace_back(nfdfilteritem_t{"Images", "tga,bmp,jpg,jpeg,png,webp"});
         break;
 	case FFLOAD_SCRIPT:
-		filter_vec.emplace_back("Script files", "lsl");
+		filter_vec.emplace_back(nfdfilteritem_t{"Script files", "lsl"});
 		break;
 	case FFLOAD_DICTIONARY:
-		filter_vec.emplace_back("Dictionary files", "dic,xcu");
+		filter_vec.emplace_back(nfdfilteritem_t{"Dictionary files", "dic,xcu"});
 		break;
 	case FFLOAD_ZIP:
-		filter_vec.emplace_back("ZIP files", "zip");
+		filter_vec.emplace_back(nfdfilteritem_t{"ZIP files", "zip"});
 	default:
 		break;
 	}
@@ -409,118 +411,118 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename,
 	switch( filter )
 	{
 	case FFSAVE_ALL:
-		filter_vec.emplace_back("WAV Sounds", "wav");
-		filter_vec.emplace_back("Targa, Bitmap Images", "tga,bmp");
+		filter_vec.emplace_back(nfdfilteritem_t{"WAV Sounds", "wav"});
+		filter_vec.emplace_back(nfdfilteritem_t{"Targa, Bitmap Images", "tga,bmp"});
 		break;
 	case FFSAVE_WAV:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.wav";
 		}
-		filter_vec.emplace_back("WAV Sounds", "wav");
+		filter_vec.emplace_back(nfdfilteritem_t{"WAV Sounds", "wav"});
 		break;
 	case FFSAVE_TGA:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.tga";
 		}
-		filter_vec.emplace_back("Targa Images", "tga");
+		filter_vec.emplace_back(nfdfilteritem_t{"Targa Images", "tga"});
 		break;
 	case FFSAVE_BMP:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.bmp";
 		}
-		filter_vec.emplace_back("Bitmap Images", "bmp");
+		filter_vec.emplace_back(nfdfilteritem_t{"Bitmap Images", "bmp"});
 		break;
 	case FFSAVE_PNG:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.png";
 		}
-		filter_vec.emplace_back("PNG Images", "png");
+		filter_vec.emplace_back(nfdfilteritem_t{"PNG Images", "png"});
 		break;
 	case FFSAVE_WEBP:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.webp";
 		}
-		filter_vec.emplace_back("WebP Images", "webp");
+		filter_vec.emplace_back(nfdfilteritem_t{"WebP Images", "webp"});
 		break;
 	case FFSAVE_TGAPNGWEBP:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.png";
 		}
-		filter_vec.emplace_back("PNG Images", "png");
-		filter_vec.emplace_back("Targa Images", "tga");
-		filter_vec.emplace_back("Jpeg Images", "jpg,jpeg");
-		filter_vec.emplace_back("Jpeg2000 Images", "j2c");
-		filter_vec.emplace_back("Bitmap Images", "bmp");
-		filter_vec.emplace_back("WebP Images", "webp");
+		filter_vec.emplace_back(nfdfilteritem_t{"PNG Images", "png"});
+		filter_vec.emplace_back(nfdfilteritem_t{"Targa Images", "tga"});
+		filter_vec.emplace_back(nfdfilteritem_t{"Jpeg Images", "jpg,jpeg"});
+		filter_vec.emplace_back(nfdfilteritem_t{"Jpeg2000 Images", "j2c"});
+		filter_vec.emplace_back(nfdfilteritem_t{"Bitmap Images", "bmp"});
+		filter_vec.emplace_back(nfdfilteritem_t{"WebP Images", "webp"});
 		break;
 	case FFSAVE_JPEG:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.jpeg";
 		}
-		filter_vec.emplace_back("Jpeg Images", "jpg,jpeg");
+		filter_vec.emplace_back(nfdfilteritem_t{"Jpeg Images", "jpg,jpeg"});
 		break;
 	case FFSAVE_AVI:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.avi";
 		}
-		filter_vec.emplace_back("AVI Movie File", "avi");
+		filter_vec.emplace_back(nfdfilteritem_t{"AVI Movie File", "avi"});
 		break;
 	case FFSAVE_ANIM:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.xaf";
 		}
-		filter_vec.emplace_back("XAF Anim File", "xaf");
+		filter_vec.emplace_back(nfdfilteritem_t{"XAF Anim File", "xaf"});
 		break;
 	case FFSAVE_CSV:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.csv";
 		}
-		filter_vec.emplace_back("Comma seperated values", "csv");
+		filter_vec.emplace_back(nfdfilteritem_t{"Comma seperated values", "csv"});
 		break;
 	case FFSAVE_XML:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.xml";
 		}
-		filter_vec.emplace_back("XML File", "xml");
+		filter_vec.emplace_back(nfdfilteritem_t{"XML File", "xml"});
 		break;
 	case FFSAVE_COLLADA:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.collada";
 		}
-		filter_vec.emplace_back("COLLADA File", "collada");
+		filter_vec.emplace_back(nfdfilteritem_t{"COLLADA File", "collada"});
 		break;
 	case FFSAVE_RAW:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.raw";
 		}
-		filter_vec.emplace_back("RAW files", "raw");
+		filter_vec.emplace_back(nfdfilteritem_t{"RAW files", "raw"});
 		break;
 	case FFSAVE_J2C:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.j2c";
 		}
-		filter_vec.emplace_back("Compressed Images", "j2c");
+		filter_vec.emplace_back(nfdfilteritem_t{"Compressed Images", "j2c"});
 		break;
 	case FFSAVE_SCRIPT:
 		if (filename.empty())
 		{
 			saved_filename = "untitled.lsl";
 		}
-		filter_vec.emplace_back("LSL Files", "lsl");
+		filter_vec.emplace_back(nfdfilteritem_t{"LSL Files", "lsl"});
 		break;
 	default:
 		return FALSE;
@@ -583,7 +585,6 @@ BOOL LLFilePicker::setupFilter(ELoadFilter filter)
 	switch (filter)
 	{
     case FFLOAD_ALL:
-    case FFLOAD_EXE:
 		mOFN.lpstrFilter = L"All Files (*.*)\0*.*\0" \
 		SOUND_FILTER \
 		IMAGE_FILTER \
@@ -591,6 +592,10 @@ BOOL LLFilePicker::setupFilter(ELoadFilter filter)
 		MATERIAL_FILTER \
 		L"\0";
 		break;
+    case FFLOAD_EXE:
+		mOFN.lpstrFilter = EXECUTABLE_FILTER \
+			L"\0";
+		break;
 	case FFLOAD_WAV:
 		mOFN.lpstrFilter = SOUND_FILTER \
 			L"\0";
-- 
GitLab