summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2025-08-28 11:20:29 +0200
committerGitHub <noreply@github.com>2025-08-28 11:20:29 +0200
commit81bf4eccba449bfe2b6adfb51260108aec710d4f (patch)
tree215c5b536cbcf1df9888081aadd3de16eb4b3ebe /src/Compositor.cpp
parent378e130f1426648d8d734049800128f9882805bf (diff)
input: Add fully configurable trackpad gestures (#11490)
Adds configurable trackpad gestures
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp53
1 files changed, 15 insertions, 38 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index cbb70e2b..c298c37d 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -53,7 +53,8 @@
#include "config/ConfigManager.hpp"
#include "render/OpenGL.hpp"
#include "managers/input/InputManager.hpp"
-#include "managers/AnimationManager.hpp"
+#include "managers/animation/AnimationManager.hpp"
+#include "managers/animation/DesktopAnimationManager.hpp"
#include "managers/EventManager.hpp"
#include "managers/HookSystemManager.hpp"
#include "managers/ProtocolManager.hpp"
@@ -2035,8 +2036,10 @@ void CCompositor::swapActiveWorkspaces(PHLMONITOR pMonitorA, PHLMONITOR pMonitor
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(pMonitorA->m_id);
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(pMonitorB->m_id);
- updateFullscreenFadeOnWorkspace(PWORKSPACEB);
- updateFullscreenFadeOnWorkspace(PWORKSPACEA);
+ g_pDesktopAnimationManager->setFullscreenFadeAnimation(
+ PWORKSPACEB, PWORKSPACEB->m_hasFullscreenWindow ? CDesktopAnimationManager::ANIMATION_TYPE_IN : CDesktopAnimationManager::ANIMATION_TYPE_OUT);
+ g_pDesktopAnimationManager->setFullscreenFadeAnimation(
+ PWORKSPACEA, PWORKSPACEA->m_hasFullscreenWindow ? CDesktopAnimationManager::ANIMATION_TYPE_IN : CDesktopAnimationManager::ANIMATION_TYPE_OUT);
if (pMonitorA->m_id == g_pCompositor->m_lastMonitor->m_id || pMonitorB->m_id == g_pCompositor->m_lastMonitor->m_id) {
const auto LASTWIN = pMonitorA->m_id == g_pCompositor->m_lastMonitor->m_id ? PWORKSPACEB->getLastFocusedWindow() : PWORKSPACEA->getLastFocusedWindow();
@@ -2221,7 +2224,7 @@ void CCompositor::moveWorkspaceToMonitor(PHLWORKSPACE pWorkspace, PHLMONITOR pMo
if (valid(pMonitor->m_activeWorkspace)) {
pMonitor->m_activeWorkspace->m_visible = false;
- pMonitor->m_activeWorkspace->startAnim(false, false);
+ g_pDesktopAnimationManager->startAnimation(pWorkspace, CDesktopAnimationManager::ANIMATION_TYPE_OUT, false);
}
if (*PHIDESPECIALONWORKSPACECHANGE)
@@ -2239,7 +2242,7 @@ void CCompositor::moveWorkspaceToMonitor(PHLWORKSPACE pWorkspace, PHLMONITOR pMo
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(pMonitor->m_id);
- pWorkspace->startAnim(true, true, true);
+ g_pDesktopAnimationManager->startAnimation(pWorkspace, CDesktopAnimationManager::ANIMATION_TYPE_IN, true, true);
pWorkspace->m_visible = true;
if (!noWarpCursor)
@@ -2252,11 +2255,14 @@ void CCompositor::moveWorkspaceToMonitor(PHLWORKSPACE pWorkspace, PHLMONITOR pMo
if (POLDMON) {
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(POLDMON->m_id);
if (valid(POLDMON->m_activeWorkspace))
- updateFullscreenFadeOnWorkspace(POLDMON->m_activeWorkspace);
+ g_pDesktopAnimationManager->setFullscreenFadeAnimation(POLDMON->m_activeWorkspace,
+ POLDMON->m_activeWorkspace->m_hasFullscreenWindow ? CDesktopAnimationManager::ANIMATION_TYPE_IN :
+ CDesktopAnimationManager::ANIMATION_TYPE_OUT);
updateSuspendedStates();
}
- updateFullscreenFadeOnWorkspace(pWorkspace);
+ g_pDesktopAnimationManager->setFullscreenFadeAnimation(
+ pWorkspace, pWorkspace->m_hasFullscreenWindow ? CDesktopAnimationManager::ANIMATION_TYPE_IN : CDesktopAnimationManager::ANIMATION_TYPE_OUT);
updateSuspendedStates();
// event
@@ -2279,36 +2285,6 @@ bool CCompositor::workspaceIDOutOfBounds(const WORKSPACEID& id) {
return std::clamp(id, lowestID, highestID) != id;
}
-void CCompositor::updateFullscreenFadeOnWorkspace(PHLWORKSPACE pWorkspace) {
-
- if (!pWorkspace)
- return;
-
- const auto FULLSCREEN = pWorkspace->m_hasFullscreenWindow;
-
- for (auto const& w : g_pCompositor->m_windows) {
- if (w->m_workspace == pWorkspace) {
-
- if (w->m_fadingOut || w->m_pinned || w->isFullscreen())
- continue;
-
- if (!FULLSCREEN)
- *w->m_alpha = 1.f;
- else if (!w->isFullscreen())
- *w->m_alpha = !w->m_createdOverFullscreen ? 0.f : 1.f;
- }
- }
-
- const auto PMONITOR = pWorkspace->m_monitor.lock();
-
- if (pWorkspace->m_id == PMONITOR->activeWorkspaceID() || pWorkspace->m_id == PMONITOR->activeSpecialWorkspaceID()) {
- for (auto const& ls : PMONITOR->m_layerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]) {
- if (!ls->m_fadingOut)
- *ls->m_alpha = FULLSCREEN && pWorkspace->m_fullscreenMode == FSMODE_FULLSCREEN ? 0.f : 1.f;
- }
- }
-}
-
void CCompositor::changeWindowFullscreenModeClient(const PHLWINDOW PWINDOW, const eFullscreenMode MODE, const bool ON) {
setWindowFullscreenClient(
PWINDOW,
@@ -2396,7 +2372,8 @@ void CCompositor::setWindowFullscreenState(const PHLWINDOW PWINDOW, SFullscreenS
w->m_createdOverFullscreen = false;
}
- updateFullscreenFadeOnWorkspace(PWORKSPACE);
+ g_pDesktopAnimationManager->setFullscreenFadeAnimation(
+ PWORKSPACE, PWORKSPACE->m_hasFullscreenWindow ? CDesktopAnimationManager::ANIMATION_TYPE_IN : CDesktopAnimationManager::ANIMATION_TYPE_OUT);
PWINDOW->sendWindowSize(true);