From 6e1fcfa81e55a7d78e40fdb5c41700c18b0e1268 Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Fri, 1 May 2026 23:50:26 +0100 Subject: hyprctl: fix getoption with custom types (#14243) --- src/debug/HyprCtl.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp index 278e92c6..e84a5552 100644 --- a/src/debug/HyprCtl.cpp +++ b/src/debug/HyprCtl.cpp @@ -1644,6 +1644,14 @@ static std::string dispatchGetOption(eHyprCtlOutputFormat format, std::string re return std::format("str: {}\nset: {}", **rc(VAL), VAR.setByUser); else if (TYPE == typeid(void*)) return std::format("custom type: {}\nset: {}", rc((*rc(VAL))->getData())->toString(), VAR.setByUser); + else if (TYPE == typeid(Config::IComplexConfigValue)) + return std::format("custom type: {}\nset: {}", (*rc(VAL))->toString(), VAR.setByUser); + else if (TYPE == typeid(Config::CCssGapData)) + return std::format("css gap data: {}\nset: {}", (*rc(VAL))->toString(), VAR.setByUser); + else if (TYPE == typeid(Config::CGradientValueData)) + return std::format("gradient data: {}\nset: {}", (*rc(VAL))->toString(), VAR.setByUser); + else if (TYPE == typeid(Config::CFontWeightConfigValueData)) + return std::format("font weight data: {}\nset: {}", (*rc(VAL))->toString(), VAR.setByUser); } else { if (TYPE == typeid(Config::INTEGER)) return std::format(R"({{"option": "{}", "int": {}, "set": {} }})", curitem, **rc(VAL), VAR.setByUser); @@ -1662,6 +1670,15 @@ static std::string dispatchGetOption(eHyprCtlOutputFormat format, std::string re else if (TYPE == typeid(void*)) return std::format(R"({{"option": "{}", "custom": "{}", "set": {} }})", curitem, rc((*rc(VAL))->getData())->toString(), VAR.setByUser); + else if (TYPE == typeid(Config::IComplexConfigValue)) + return std::format(R"({{"option": "{}", "custom": "{}", "set": {} }})", curitem, (*rc(VAL))->toString(), VAR.setByUser); + else if (TYPE == typeid(Config::CCssGapData)) + return std::format(R"({{"option": "{}", "css": "{}", "set": {} }})", curitem, (*rc(VAL))->toString(), VAR.setByUser); + else if (TYPE == typeid(Config::CGradientValueData)) + return std::format(R"({{"option": "{}", "gradient": "{}", "set": {} }})", curitem, (*rc(VAL))->toString(), VAR.setByUser); + else if (TYPE == typeid(Config::CFontWeightConfigValueData)) + return std::format(R"({{"option": "{}", "font_weight": "{}", "set": {} }})", curitem, (*rc(VAL))->toString(), + VAR.setByUser); } return "invalid type (internal error)"; -- cgit v1.2.3