mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-26 23:06:00 +01:00
windowrules: improve opacity
This commit is contained in:
parent
263b9c6e39
commit
27dd07f1b8
1 changed files with 23 additions and 13 deletions
|
@ -476,20 +476,30 @@ void CWindow::applyDynamicRule(const SWindowRule& r) {
|
||||||
try {
|
try {
|
||||||
CVarList vars(r.szRule, 0, ' ');
|
CVarList vars(r.szRule, 0, ' ');
|
||||||
|
|
||||||
for (size_t i = 1 /* first item is "opacity" */; i < vars.size(); ++i) {
|
int opacityIDX = 0;
|
||||||
if (i == 1) {
|
|
||||||
// first arg, alpha
|
for (auto& r : vars) {
|
||||||
m_sSpecialRenderData.alpha = std::stof(vars[i]);
|
if (r == "opacity")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (r == "override") {
|
||||||
|
if (opacityIDX == 0) {
|
||||||
|
m_sSpecialRenderData.alphaOverride = true;
|
||||||
|
m_sSpecialRenderData.alphaInactiveOverride = true;
|
||||||
|
} else
|
||||||
|
m_sSpecialRenderData.alphaInactiveOverride = true;
|
||||||
} else {
|
} else {
|
||||||
if (vars[i] == "override") {
|
if (opacityIDX == 0) {
|
||||||
if (i == 2) {
|
m_sSpecialRenderData.alpha = std::stof(r);
|
||||||
m_sSpecialRenderData.alphaOverride = true;
|
m_sSpecialRenderData.alphaInactive = std::stof(r);
|
||||||
} else {
|
} else if (opacityIDX == 1) {
|
||||||
m_sSpecialRenderData.alphaInactiveOverride = true;
|
m_sSpecialRenderData.alphaInactive = std::stof(r);
|
||||||
}
|
m_sSpecialRenderData.alphaInactiveOverride = false;
|
||||||
} else {
|
} else {
|
||||||
m_sSpecialRenderData.alphaInactive = std::stof(vars[i]);
|
throw std::runtime_error("more than 2 alpha values");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opacityIDX++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (std::exception& e) { Debug::log(ERR, "Opacity rule \"%s\" failed with: %s", r.szRule.c_str(), e.what()); }
|
} catch (std::exception& e) { Debug::log(ERR, "Opacity rule \"%s\" failed with: %s", r.szRule.c_str(), e.what()); }
|
||||||
|
@ -666,8 +676,8 @@ void CWindow::setGroupCurrent(CWindow* pWindow) {
|
||||||
void CWindow::insertWindowToGroup(CWindow* pWindow) {
|
void CWindow::insertWindowToGroup(CWindow* pWindow) {
|
||||||
static const auto* USECURRPOS = &g_pConfigManager->getConfigValuePtr("misc:group_insert_after_current")->intValue;
|
static const auto* USECURRPOS = &g_pConfigManager->getConfigValuePtr("misc:group_insert_after_current")->intValue;
|
||||||
|
|
||||||
const auto BEGINAT = *USECURRPOS ? this : getGroupTail();
|
const auto BEGINAT = *USECURRPOS ? this : getGroupTail();
|
||||||
const auto ENDAT = *USECURRPOS ? m_sGroupData.pNextWindow : getGroupHead();
|
const auto ENDAT = *USECURRPOS ? m_sGroupData.pNextWindow : getGroupHead();
|
||||||
|
|
||||||
if (!pWindow->m_sGroupData.pNextWindow) {
|
if (!pWindow->m_sGroupData.pNextWindow) {
|
||||||
BEGINAT->m_sGroupData.pNextWindow = pWindow;
|
BEGINAT->m_sGroupData.pNextWindow = pWindow;
|
||||||
|
|
Loading…
Reference in a new issue