summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2022-10-06 09:16:40 +0100
committervaxerski <vaxry@vaxry.net>2022-10-06 09:16:40 +0100
commit190ddb5697be20acacbfdcd6014c331deb397e36 (patch)
tree654999d9f2e6bebde96fcb51296f1487c679835b /src
parent095688712d2a064bb7bfaded3ffc21580e5d338f (diff)
added a noanim rule
Diffstat (limited to 'src')
-rw-r--r--src/Window.hpp1
-rw-r--r--src/config/ConfigManager.cpp1
-rw-r--r--src/events/Windows.cpp2
-rw-r--r--src/managers/AnimationManager.cpp6
4 files changed, 8 insertions, 2 deletions
diff --git a/src/Window.hpp b/src/Window.hpp
index d75c89f4..e0fa7ffa 100644
--- a/src/Window.hpp
+++ b/src/Window.hpp
@@ -23,6 +23,7 @@ struct SWindowAdditionalConfigData {
bool forceNoBlur = false;
bool forceOpaque = false;
bool forceAllowsInput = false;
+ bool forceNoAnims = false;
};
class CWindow {
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 162d6bf3..c1ea3e01 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -721,6 +721,7 @@ bool windowRuleValid(const std::string& RULE) {
&& RULE != "forceinput"
&& RULE != "fullscreen"
&& RULE != "pin"
+ && RULE != "noanim"
&& RULE.find("animation") != 0
&& RULE.find("rounding") != 0
&& RULE.find("workspace") != 0);
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index 54da4747..9d5cd446 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -166,6 +166,8 @@ void Events::listener_mapWindow(void* owner, void* data) {
PWINDOW->m_sAdditionalConfigData.forceAllowsInput = true;
} else if (r.szRule == "pin") {
PWINDOW->m_bPinned = true;
+ } else if (r.szRule == "noanim") {
+ PWINDOW->m_sAdditionalConfigData.forceNoAnims = true;
} else if (r.szRule.find("rounding") == 0) {
try {
PWINDOW->m_sAdditionalConfigData.rounding = std::stoi(r.szRule.substr(r.szRule.find_first_of(' ') + 1));
diff --git a/src/managers/AnimationManager.cpp b/src/managers/AnimationManager.cpp
index 27653766..b79f28bd 100644
--- a/src/managers/AnimationManager.cpp
+++ b/src/managers/AnimationManager.cpp
@@ -21,12 +21,12 @@ void CAnimationManager::addBezierWithName(std::string name, const Vector2D& p1,
void CAnimationManager::tick() {
- bool animationsDisabled = false;
+ bool animGlobalDisabled = false;
static auto *const PANIMENABLED = &g_pConfigManager->getConfigValuePtr("animations:enabled")->intValue;
if (!*PANIMENABLED)
- animationsDisabled = true;
+ animGlobalDisabled = true;
static auto *const PBORDERSIZE = &g_pConfigManager->getConfigValuePtr("general:border_size")->intValue;
static auto *const PSHADOWSENABLED = &g_pConfigManager->getConfigValuePtr("decoration:drop_shadow")->intValue;
@@ -56,11 +56,13 @@ void CAnimationManager::tick() {
const auto PWORKSPACE = (CWorkspace*)av->m_pWorkspace;
const auto PLAYER = (SLayerSurface*)av->m_pLayer;
CMonitor* PMONITOR = nullptr;
+ bool animationsDisabled = animGlobalDisabled;
wlr_box WLRBOXPREV = {0,0,0,0};
if (PWINDOW) {
WLRBOXPREV = PWINDOW->getFullWindowBoundingBox();
PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
+ animationsDisabled = animationsDisabled || PWINDOW->m_sAdditionalConfigData.forceNoAnims;
} else if (PWORKSPACE) {
PMONITOR = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID);
WLRBOXPREV = {(int)PMONITOR->vecPosition.x, (int)PMONITOR->vecPosition.y, (int)PMONITOR->vecSize.x, (int)PMONITOR->vecSize.y};