diff options
author | end-4 <[email protected]> | 2023-06-12 00:30:31 +0700 |
---|---|---|
committer | GitHub <[email protected]> | 2023-06-11 19:30:31 +0200 |
commit | e1edfde539557d175f8c48d94996469426da7c47 (patch) | |
tree | b14dd7f02cb6c06a26ec1a72c5cb34b353dc15c6 /src/helpers/WLClasses.cpp | |
parent | 10fd75c8335736b1a0dcb3830a5b8c2367a02e61 (diff) | |
download | Hyprland-e1edfde539557d175f8c48d94996469426da7c47.tar.gz Hyprland-e1edfde539557d175f8c48d94996469426da7c47.zip |
Allow setting alpha value for ignorezero layer rule (#2477)
* rename ignorezero to ignorealpha
* allow setting ignorealpha value
This commit allows setting a float value (0-1) for the ignorealpha layer rule.
Does not yet have error handling; invalid ignorealpha layer rule will crash Hyprland.
* add brackets i forgot to add
* prevent crash with invalid ignorealpha value
prevents hyprland from immediately crashing with invalid ignorealpha layer rule
does not log
* don't try to set ignoreAlphaValue if alpha value not specified
* add catch to try, reintroduce ignorezero
- added catch after try cuz i was an idiot
- re-add ignorezero as an alternative to ignorealpha to not introduce a breaking change
* add logging for failed ignorealpha layer rule
* fix get ignorealpha's get VALUE
* check npos and use empty()
* rename VALUE cuz no longer const
* format Shader.hpp
Diffstat (limited to 'src/helpers/WLClasses.cpp')
-rw-r--r-- | src/helpers/WLClasses.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/helpers/WLClasses.cpp b/src/helpers/WLClasses.cpp index 29e10a54..3a03afcd 100644 --- a/src/helpers/WLClasses.cpp +++ b/src/helpers/WLClasses.cpp @@ -8,16 +8,27 @@ SLayerSurface::SLayerSurface() { } void SLayerSurface::applyRules() { - noAnimations = false; - forceBlur = false; - ignoreZero = false; + noAnimations = false; + forceBlur = false; + ignoreAlpha = false; + ignoreAlphaValue = 0.f; for (auto& rule : g_pConfigManager->getMatchingRules(this)) { if (rule.rule == "noanim") noAnimations = true; else if (rule.rule == "blur") forceBlur = true; - else if (rule.rule == "ignorezero") - ignoreZero = true; + else if (rule.rule.find("ignorealpha") == 0 || rule.rule.find("ignorezero") == 0) { + const auto FIRST_SPACE_POS = rule.rule.find_first_of(' '); + std::string alphaValue = ""; + if (FIRST_SPACE_POS != std::string::npos) + alphaValue = rule.rule.substr(FIRST_SPACE_POS + 1); + + try { + ignoreAlpha = true; + if (!alphaValue.empty()) + ignoreAlphaValue = std::stof(alphaValue); + } catch (...) { Debug::log(ERR, "Invalid value passed to ignoreAlpha"); } + } } }
\ No newline at end of file |