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;