diff --git a/src/effects/desktopgrid/desktopgrid_config.ui b/src/effects/desktopgrid/desktopgrid_config.ui index f4d391d434..27eaebfc72 100644 --- a/src/effects/desktopgrid/desktopgrid_config.ui +++ b/src/effects/desktopgrid/desktopgrid_config.ui @@ -142,6 +142,11 @@ Natural + + + None + + diff --git a/src/effects/private/expolayout.cpp b/src/effects/private/expolayout.cpp index 707575862a..55e87d27dc 100644 --- a/src/effects/private/expolayout.cpp +++ b/src/effects/private/expolayout.cpp @@ -292,6 +292,9 @@ void ExpoLayout::updatePolish() case LayoutNatural: calculateWindowTransformationsNatural(); break; + case LayoutNone: + resetTransformations(); + break; } } @@ -701,3 +704,13 @@ void ExpoLayout::calculateWindowTransformationsNatural() cell->setHeight(rect.height()); } } + +void ExpoLayout::resetTransformations() +{ + for (ExpoCell *cell : std::as_const(m_cells)) { + cell->setX(cell->naturalX()); + cell->setY(cell->naturalY()); + cell->setWidth(cell->naturalWidth()); + cell->setHeight(cell->naturalHeight()); + } +} diff --git a/src/effects/private/expolayout.h b/src/effects/private/expolayout.h index 6510b2b90b..1fb7af3b2a 100644 --- a/src/effects/private/expolayout.h +++ b/src/effects/private/expolayout.h @@ -26,6 +26,7 @@ public: enum LayoutMode : uint { LayoutClosest = 0, LayoutNatural = 1, + LayoutNone = 2 }; Q_ENUM(LayoutMode) @@ -65,6 +66,7 @@ Q_SIGNALS: private: void calculateWindowTransformationsClosest(); void calculateWindowTransformationsNatural(); + void resetTransformations(); QList m_cells; LayoutMode m_mode = LayoutNatural;