[plasma/kwin] src: Repurpose Gravity::None as Gravity::Center

Vlad Zahorodnii <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 81300c5ff2df6a6671ecd54edc35a635475c568e by Vlad Zahorodnii.
Committed on 03/08/2026 at 13:24.
Pushed by vladz into branch 'master'.

Repurpose Gravity::None as Gravity::Center

M  +1    -1    src/tiles/customtile.cpp
M  +2    -2    src/tiles/tile.cpp
M  +4    -2    src/utils/gravity.cpp
M  +1    -1    src/utils/gravity.h
M  +1    -1    src/wayland/xdgshell.cpp
M  +1    -1    src/wayland/xxpip_v1.cpp
M  +14   -14   src/window.cpp
M  +3    -3    src/window.h
M  +1    -1    src/xdgshellwindow.cpp

https://invent.kde.org/plasma/kwin/-/commit/81300c5ff2df6a6671ecd54edc35a635475c568e

diff --git a/src/tiles/customtile.cpp b/src/tiles/customtile.cpp
index 70fa4485bea..c606acbc124 100644
--- a/src/tiles/customtile.cpp
+++ b/src/tiles/customtile.cpp
@@ -184,7 +184,7 @@ void CustomTile::setRelativeGeometry(const RectF &geom)
 bool CustomTile::supportsResizeGravity(KWin::Gravity gravity)
 {
     if (layoutDirection() == LayoutDirection::Floating) {
-        return gravity != Gravity::None;
+        return gravity != Gravity::Center;
     }
 
     return Tile::supportsResizeGravity(gravity);
diff --git a/src/tiles/tile.cpp b/src/tiles/tile.cpp
index 85cfb975a8c..510917e01fc 100644
--- a/src/tiles/tile.cpp
+++ b/src/tiles/tile.cpp
@@ -99,7 +99,7 @@ bool Tile::supportsResizeGravity(Gravity gravity)
         return m_relativeGeometry.bottom() < 1.0 && m_relativeGeometry.left() > 0.0;
     case Gravity::BottomRight:
         return m_relativeGeometry.bottom() < 1.0 && m_relativeGeometry.right() < 1.0;
-    case Gravity::None:
+    case Gravity::Center:
     default:
         return false;
     }
@@ -332,7 +332,7 @@ void Tile::resizeFromGravity(Gravity gravity, int x_root, int y_root)
     case Gravity::Right:
         newGeom.setRight(relativePos.x() + m_padding / outGeom.width());
         break;
-    case Gravity::None:
+    case Gravity::Center:
         Q_UNREACHABLE();
         break;
     }
diff --git a/src/utils/gravity.cpp b/src/utils/gravity.cpp
index 6334ddbeb0e..ed83aa38c25 100644
--- a/src/utils/gravity.cpp
+++ b/src/utils/gravity.cpp
@@ -10,7 +10,7 @@ namespace KWin
 {
 
 Gravity::Gravity()
-    : m_kind(None)
+    : m_kind(Center)
 {
 }
 
@@ -29,6 +29,9 @@ RectF Gravity::apply(const RectF &rect, const RectF &bounds) const
     RectF geometry = rect;
 
     switch (m_kind) {
+    case Gravity::Center:
+        geometry.moveCenter(bounds.center());
+        break;
     case Gravity::TopLeft:
         geometry.moveRight(bounds.right());
         geometry.moveBottom(bounds.bottom());
@@ -45,7 +48,6 @@ RectF Gravity::apply(const RectF &rect, const RectF &bounds) const
         geometry.moveLeft(bounds.left());
         geometry.moveVerticalCenter(bounds.verticalCenter());
         break;
-    case Gravity::None:
     case Gravity::BottomRight:
         geometry.moveLeft(bounds.left());
         geometry.moveTop(bounds.top());
diff --git a/src/utils/gravity.h b/src/utils/gravity.h
index 59c97d451ab..edd490f22e6 100644
--- a/src/utils/gravity.h
+++ b/src/utils/gravity.h
@@ -18,7 +18,7 @@ class KWIN_EXPORT Gravity
 {
 public:
     enum Kind {
-        None,
+        Center,
         Left,
         Right,
         Top,
diff --git a/src/wayland/xdgshell.cpp b/src/wayland/xdgshell.cpp
index c0943c9be93..21785a63616 100644
--- a/src/wayland/xdgshell.cpp
+++ b/src/wayland/xdgshell.cpp
@@ -487,7 +487,7 @@ void XdgToplevelInterfacePrivate::xdg_toplevel_resize(Resource *resource, ::wl_r
     Gravity gravity;
     switch (xdgEdges) {
     case resize_edge_none:
-        gravity = Gravity::None;
+        gravity = Gravity::Center;
         break;
     case resize_edge_top:
         gravity = Gravity::Top;
diff --git a/src/wayland/xxpip_v1.cpp b/src/wayland/xxpip_v1.cpp
index 801dc59d629..4071bce924d 100644
--- a/src/wayland/xxpip_v1.cpp
+++ b/src/wayland/xxpip_v1.cpp
@@ -205,7 +205,7 @@ void XXPipV1InterfacePrivate::xx_pip_v1_resize(Resource *resource, struct ::wl_r
     Gravity gravity;
     switch (edges) {
     case resize_edge_none:
-        gravity = Gravity::None;
+        gravity = Gravity::Center;
         break;
     case resize_edge_top:
         gravity = Gravity::Top;
diff --git a/src/window.cpp b/src/window.cpp
index 9c033bd21b2..f551106130d 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -1033,8 +1033,8 @@ bool Window::startInteractiveMoveResize()
     if (isRequestedFullScreen() && (workspace()->outputs().count() < 2 || !isMovableAcrossScreens())) {
         return false;
     }
-    if ((interactiveMoveResizeGravity() == Gravity::None && !isMovableAcrossScreens())
-        || (interactiveMoveResizeGravity() != Gravity::None && !isResizable())) {
+    if ((interactiveMoveResizeGravity() == Gravity::Center && !isMovableAcrossScreens())
+        || (interactiveMoveResizeGravity() != Gravity::Center && !isResizable())) {
         return false;
     }
     if (!doStartInteractiveMoveResize()) {
@@ -1310,7 +1310,7 @@ static RegionF interactiveMoveResizeVisibleSubrectRegion(const RectF &geometry,
 
     RectF initialRect = availableArea;
     switch (gravity) {
-    case Gravity::None:
+    case Gravity::Center:
     case Gravity::Top:
         // resizing from the top is handled like moving the window to avoid zero width rectangles when window width is equal to minWidth
         initialRect.adjust(0, 0, -minVisibleArea.width(), -minVisibleArea.height());
@@ -1336,7 +1336,7 @@ static RegionF interactiveMoveResizeVisibleSubrectRegion(const RectF &geometry,
     RegionF availableRegion(initialRect);
 
     switch (gravity) {
-    case Gravity::None:
+    case Gravity::Center:
     case Gravity::Top:
     case Gravity::Left:
     case Gravity::TopLeft:
@@ -1378,7 +1378,7 @@ static std::optional<QPointF> confineInteractiveMove(const RectF &geometry, cons
     const QSizeF effectiveMinVisibleArea(std::min(geometry.width(), minVisibleArea.width()),
                                          std::min(geometry.height(), minVisibleArea.height()));
 
-    const RegionF visibleSubrectRegion = interactiveMoveResizeVisibleSubrectRegion(geometry, Gravity::None, effectiveMinVisibleArea);
+    const RegionF visibleSubrectRegion = interactiveMoveResizeVisibleSubrectRegion(geometry, Gravity::Center, effectiveMinVisibleArea);
     const QPointF anchor = geometry.topLeft();
     for (RectF rect : visibleSubrectRegion.rects()) {
         // Extend the left edge of the rect so the right edge of the window can be
@@ -1498,7 +1498,7 @@ std::optional<QPointF> Window::confineInteractiveResize(const RectF &geometry, G
         case Gravity::Right:
             break;
 
-        case Gravity::None:
+        case Gravity::Center:
             Q_UNREACHABLE();
         }
 
@@ -1533,7 +1533,7 @@ std::optional<QPointF> Window::confineInteractiveResize(const RectF &geometry, G
             constrainedRect.setRight(std::min(constrainedRect.right(), geometry.left() + maxFrameSize.width()));
             break;
 
-        case Gravity::None:
+        case Gravity::Center:
             Q_UNREACHABLE();
         }
 
@@ -1592,7 +1592,7 @@ RectF Window::nextInteractiveResizeGeometry(const QPointF &global) const
     RectF nextMoveResizeGeom = moveResizeGeometry();
 
     const Gravity gravity = interactiveMoveResizeGravity();
-    if (gravity == Gravity::None || !isResizable()) {
+    if (gravity == Gravity::Center || !isResizable()) {
         return nextMoveResizeGeom;
     }
 
@@ -1627,7 +1627,7 @@ RectF Window::nextInteractiveResizeGeometry(const QPointF &global) const
     case Gravity::Right:
         nextMoveResizeGeom = RectF(orig.topLeft(), QPointF(bottomright.x(), orig.bottom()));
         break;
-    case Gravity::None:
+    case Gravity::Center:
         Q_UNREACHABLE();
         break;
     }
@@ -1664,7 +1664,7 @@ RectF Window::nextInteractiveResizeGeometry(const QPointF &global) const
     case Gravity::Left:
         nextMoveResizeGeom.setLeft(nextMoveResizeGeom.right() - constrainedSize.width());
         break;
-    case Gravity::None:
+    case Gravity::Center:
         Q_UNREACHABLE();
     }
 
@@ -2155,7 +2155,7 @@ bool Window::performMousePressCommand(Options::MouseCommand cmd, const QPointF &
         if (isInteractiveMoveResize()) {
             finishInteractiveMoveResize(false);
         }
-        setInteractiveMoveResizeGravity(Gravity::None);
+        setInteractiveMoveResizeGravity(Gravity::Center);
         setInteractiveMoveResizePointerButtonDown(true);
         setInteractiveMoveResizeAnchor(globalPos);
         setInteractiveMoveResizeModifiers(Qt::KeyboardModifiers());
@@ -2411,7 +2411,7 @@ void Window::updateInteractiveMoveResizeCursor()
     }
     Gravity gravity = interactiveMoveResizeGravity();
     if (!isResizable()) {
-        gravity = Gravity::None;
+        gravity = Gravity::Center;
     }
     CursorShape c = Qt::ArrowCursor;
     switch (gravity) {
@@ -2641,10 +2641,10 @@ Gravity Window::mouseGravity() const
         case Qt::TopRightSection:
             return Gravity::TopRight;
         default:
-            return Gravity::None;
+            return Gravity::Center;
         }
     }
-    return Gravity::None;
+    return Gravity::Center;
 }
 
 void Window::endInteractiveMoveResize()
diff --git a/src/window.h b/src/window.h
index 8ab31081e8f..fc419ba3777 100644
--- a/src/window.h
+++ b/src/window.h
@@ -1152,14 +1152,14 @@ public:
      */
     bool isInteractiveMove() const
     {
-        return isInteractiveMoveResize() && interactiveMoveResizeGravity() == Gravity::None;
+        return isInteractiveMoveResize() && interactiveMoveResizeGravity() == Gravity::Center;
     }
     /**
      * Returns @c true if the Client is being interactively resized; otherwise @c false.
      */
     bool isInteractiveResize() const
     {
-        return isInteractiveMoveResize() && interactiveMoveResizeGravity() != Gravity::None;
+        return isInteractiveMoveResize() && interactiveMoveResizeGravity() != Gravity::Center;
     }
     Gravity interactiveMoveResizeGravity() const
     {
@@ -1881,7 +1881,7 @@ protected:
         QPointF offset;
         RectF initialGeometry;
         RectF initialGeometryRestore;
-        Gravity gravity = Gravity::None;
+        Gravity gravity = Gravity::Center;
         bool buttonDown = false;
         CursorShape cursor = Qt::ArrowCursor;
         QString initialOutputId;
diff --git a/src/xdgshellwindow.cpp b/src/xdgshellwindow.cpp
index be50886f177..d6c39cca58e 100644
--- a/src/xdgshellwindow.cpp
+++ b/src/xdgshellwindow.cpp
@@ -870,7 +870,7 @@ void XdgToplevelWindow::doSetQuickTileMode()
 
 bool XdgToplevelWindow::doStartInteractiveMoveResize()
 {
-    if (interactiveMoveResizeGravity() != Gravity::None) {
+    if (interactiveMoveResizeGravity() != Gravity::Center) {
         m_nextGravity = interactiveMoveResizeGravity();
         m_nextStates |= XdgToplevelInterface::State::Resizing;
         scheduleConfigure();
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.