diff --git a/src/abstract_client.cpp b/src/abstract_client.cpp index a49c9f7797..7687b5c75b 100644 --- a/src/abstract_client.cpp +++ b/src/abstract_client.cpp @@ -2336,7 +2336,6 @@ void AbstractClient::createDecoration(const QRect &oldGeometry) } setDecoration(decoration); moveResize(QRect(oldGeometry.topLeft(), clientSizeToFrameSize(clientSize()))); - updateDecorationInputShape(); Q_EMIT geometryShapeChanged(this, oldGeometry); } @@ -2344,18 +2343,20 @@ void AbstractClient::createDecoration(const QRect &oldGeometry) void AbstractClient::destroyDecoration() { setDecoration(nullptr); - m_decoration.inputRegion = QRegion(); + resize(implicitSize()); } void AbstractClient::setDecoration(KDecoration2::Decoration *decoration) { m_decoration.decoration.reset(decoration); + updateDecorationInputShape(); Q_EMIT decorationChanged(); } void AbstractClient::updateDecorationInputShape() { if (!isDecorated()) { + m_decoration.inputRegion = QRegion(); return; } diff --git a/src/x11client.cpp b/src/x11client.cpp index f99822141c..7b57b09637 100644 --- a/src/x11client.cpp +++ b/src/x11client.cpp @@ -1148,7 +1148,6 @@ void X11Client::createDecoration(const QRect& oldgeom) move(calculateGravitation(false)); resize(implicitSize()); - updateDecorationInputShape(); maybeCreateX11DecorationRenderer(); Q_EMIT geometryShapeChanged(this, oldgeom); } @@ -1158,7 +1157,7 @@ void X11Client::destroyDecoration() QRect oldgeom = frameGeometry(); if (isDecorated()) { QPoint grav = calculateGravitation(true); - AbstractClient::destroyDecoration(); + setDecoration(nullptr); maybeDestroyX11DecorationRenderer(); resize(implicitSize()); move(grav);