diff --git a/src/surfaceitem_x11.cpp b/src/surfaceitem_x11.cpp index 04d166c67c..075c9eea2a 100644 --- a/src/surfaceitem_x11.cpp +++ b/src/surfaceitem_x11.cpp @@ -18,7 +18,7 @@ SurfaceItemX11::SurfaceItemX11(Window *window, Item *parent) connect(window, &Window::bufferGeometryChanged, this, &SurfaceItemX11::handleBufferGeometryChanged); connect(window, &Window::geometryShapeChanged, - this, &SurfaceItemX11::discardQuads); + this, &SurfaceItemX11::handleGeometryShapeChanged); m_damageHandle = xcb_generate_id(kwinApp()->x11Connection()); xcb_damage_create(kwinApp()->x11Connection(), m_damageHandle, window->frameId(), @@ -123,6 +123,12 @@ void SurfaceItemX11::handleBufferGeometryChanged(Window *window, const QRect &ol setSize(window->bufferGeometry().size()); } +void SurfaceItemX11::handleGeometryShapeChanged() +{ + scheduleRepaint(boundingRect()); + discardQuads(); +} + QRegion SurfaceItemX11::shape() const { const QRect clipRect = window()->clientGeometry().translated(-window()->bufferGeometry().topLeft()); diff --git a/src/surfaceitem_x11.h b/src/surfaceitem_x11.h index c1aa4542c4..55cfc23dfc 100644 --- a/src/surfaceitem_x11.h +++ b/src/surfaceitem_x11.h @@ -37,6 +37,7 @@ public: private Q_SLOTS: void handleBufferGeometryChanged(Window *window, const QRect &old); + void handleGeometryShapeChanged(); protected: SurfacePixmap *createPixmap() override;