From 802abf09d17ecb69810e09c3a6cebcecbbdc44d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 17 Feb 2012 18:41:44 +0100 Subject: [PATCH] allow windows to withdraw XShape masks BUG: 293736 REVIEW: 104007 --- client.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/client.cpp b/client.cpp index da0fd466ee..22aa8dcdcb 100644 --- a/client.cpp +++ b/client.cpp @@ -831,10 +831,15 @@ void Client::updateShape() noborder = true; updateDecoration(true); } - } - if (shape() && noBorder()) - XShapeCombineShape(display(), frameId(), ShapeBounding, + if (noBorder()) + XShapeCombineShape(display(), frameId(), ShapeBounding, clientPos().x(), clientPos().y(), window(), ShapeBounding, ShapeSet); + } else if (app_noborder) { + XShapeCombineMask(display(), frameId(), ShapeBounding, 0, 0, None, ShapeSet); + detectNoBorder(); + app_noborder = noborder; + updateDecoration(true); + } // Decoration mask (i.e. 'else' here) setting is done in setMask() // when the decoration calls it or when the decoration is created/destroyed