From f5c0dc717a5347c4090182df2235fb1736f82a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Sat, 3 Dec 2022 18:58:47 +0100 Subject: [PATCH] Sort post-shaders alphabetically in the list. --- GPU/Common/PostShader.cpp | 28 ++++++++++++++++------------ GPU/Common/PostShader.h | 6 ++++++ UI/DisplayLayoutScreen.cpp | 1 + 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/GPU/Common/PostShader.cpp b/GPU/Common/PostShader.cpp index 6b0b94387a..0c525f766e 100644 --- a/GPU/Common/PostShader.cpp +++ b/GPU/Common/PostShader.cpp @@ -50,18 +50,6 @@ void LoadPostShaderInfo(Draw::DrawContext *draw, const std::vector &direct } shaderInfo.clear(); - ShaderInfo off{}; - off.visible = true; - off.name = "Off"; - off.section = "Off"; - for (size_t i = 0; i < ARRAY_SIZE(off.settings); ++i) { - off.settings[i].name.clear(); - off.settings[i].value = 0.0f; - off.settings[i].minValue = -1.0f; - off.settings[i].maxValue = 1.0f; - off.settings[i].step = 0.01f; - } - shaderInfo.push_back(off); textureShaderInfo.clear(); TextureShaderInfo textureOff{}; @@ -231,6 +219,22 @@ void LoadPostShaderInfo(Draw::DrawContext *draw, const std::vector &direct } } + // Sort shaders alphabetically. + std::sort(shaderInfo.begin(), shaderInfo.end()); + + ShaderInfo off{}; + off.visible = true; + off.name = "Off"; + off.section = "Off"; + for (size_t i = 0; i < ARRAY_SIZE(off.settings); ++i) { + off.settings[i].name.clear(); + off.settings[i].value = 0.0f; + off.settings[i].minValue = -1.0f; + off.settings[i].maxValue = 1.0f; + off.settings[i].step = 0.01f; + } + shaderInfo.insert(shaderInfo.begin(), off); + // We always want the not visible ones at the end. Makes menus easier. for (const auto &info : notVisible) { appendShader(info); diff --git a/GPU/Common/PostShader.h b/GPU/Common/PostShader.h index 849ac884f3..befa5847ce 100644 --- a/GPU/Common/PostShader.h +++ b/GPU/Common/PostShader.h @@ -66,6 +66,12 @@ struct ShaderInfo { bool operator == (const ShaderInfo &other) { return name == other.name; } + + bool operator < (const ShaderInfo &other) { + if (name < other.name) return true; + if (name > other.name) return false; + return false; + } }; struct TextureShaderInfo { diff --git a/UI/DisplayLayoutScreen.cpp b/UI/DisplayLayoutScreen.cpp index 5152965179..82ee390b7c 100644 --- a/UI/DisplayLayoutScreen.cpp +++ b/UI/DisplayLayoutScreen.cpp @@ -267,6 +267,7 @@ void DisplayLayoutScreen::CreateViews() { postProcChoice_->OnClick.Add([=](EventParams &e) { auto gr = GetI18NCategory("Graphics"); auto procScreen = new PostProcScreen(gr->T("Postprocessing Shader"), i, false); + procScreen->SetHasDropShadow(false); procScreen->OnChoice.Handle(this, &DisplayLayoutScreen::OnPostProcShaderChange); if (e.v) procScreen->SetPopupOrigin(e.v);