diff --git a/loader/include/Geode/ui/GeodeUI.hpp b/loader/include/Geode/ui/GeodeUI.hpp index 02417318..2d9ba1ad 100644 --- a/loader/include/Geode/ui/GeodeUI.hpp +++ b/loader/include/Geode/ui/GeodeUI.hpp @@ -141,6 +141,16 @@ namespace geode { * Open the settings popup for a mod (if it has any settings) */ GEODE_DLL void openSettingsPopup(Mod* mod); + /** + * Open the settings popup for a mod (if it has any settings) + * @param mod Mod the open the popup for + * @param disableGeodeTheme If false, the popup follows the user's chosen + * theme options. If true, the popup is always in the GD theme (not Geode's + * dark purple colors) + * @returns A pointer to the created Popup, or null if the mod has no + * settings + */ + GEODE_DLL Popup* openSettingsPopup(Mod* mod, bool disableGeodeTheme); /** * Create a default logo sprite */ diff --git a/loader/src/ui/GeodeUI.cpp b/loader/src/ui/GeodeUI.cpp index a1588152..9c1dce65 100644 --- a/loader/src/ui/GeodeUI.cpp +++ b/loader/src/ui/GeodeUI.cpp @@ -159,9 +159,15 @@ void geode::openChangelogPopup(Mod* mod) { } void geode::openSettingsPopup(Mod* mod) { + openSettingsPopup(mod, true); +} +Popup* geode::openSettingsPopup(Mod* mod, bool disableGeodeTheme) { if (mod->hasSettings()) { - ModSettingsPopup::create(mod)->show(); + auto popup = ModSettingsPopup::create(mod, disableGeodeTheme); + popup->show(); + return popup; } + return nullptr; } class ModLogoSprite : public CCNode { diff --git a/loader/src/ui/mods/settings/ModSettingsPopup.cpp b/loader/src/ui/mods/settings/ModSettingsPopup.cpp index e5ff3411..5048f8b0 100644 --- a/loader/src/ui/mods/settings/ModSettingsPopup.cpp +++ b/loader/src/ui/mods/settings/ModSettingsPopup.cpp @@ -345,9 +345,9 @@ void ModSettingsPopup::onClose(CCObject* sender) { GeodePopup::onClose(sender); } -ModSettingsPopup* ModSettingsPopup::create(Mod* mod) { +ModSettingsPopup* ModSettingsPopup::create(Mod* mod, bool forceDisableTheme) { auto ret = new ModSettingsPopup(); - if (ret->init(440, 280, mod)) { + if (ret->init(440, 280, mod, GeodePopupStyle::Default, forceDisableTheme)) { ret->autorelease(); return ret; } diff --git a/loader/src/ui/mods/settings/ModSettingsPopup.hpp b/loader/src/ui/mods/settings/ModSettingsPopup.hpp index 60662e2a..c8cd14b5 100644 --- a/loader/src/ui/mods/settings/ModSettingsPopup.hpp +++ b/loader/src/ui/mods/settings/ModSettingsPopup.hpp @@ -33,5 +33,5 @@ protected: void onClearSearch(CCObject*); public: - static ModSettingsPopup* create(Mod* mod); + static ModSettingsPopup* create(Mod* mod, bool forceDisableTheme = false); };