Merging from old trunk:

r574237 | lunakl | 2006-08-18 15:45:50 +0200 (Fri, 18 Aug 2006) | 5 lines

Differentiate properly between shape set by the window itself
(which forces it to be a non-decorated window) and mask set
by the decoration.


svn path=/trunk/KDE/kdebase/workspace/; revision=659281
This commit is contained in:
Luboš Luňák 2007-04-29 21:39:58 +00:00
parent 04d5294afa
commit b99dee8cf7

View file

@ -288,6 +288,7 @@ void Client::updateDecoration( bool check_workspace_pos, bool force )
destroyDecoration();
if( !noBorder())
{
setMask( QRegion()); // reset shape mask
decoration = workspace()->createDecoration( bridge );
// TODO check decoration's minimum size?
decoration->init();
@ -470,17 +471,15 @@ void Client::updateShape()
clientPos().x(), clientPos().y(),
window(), ShapeBounding, ShapeSet);
}
else
{
XShapeCombineMask( display(), frameId(), ShapeBounding, 0, 0,
None, ShapeSet);
}
// !shape() mask setting is done in setMask() when the decoration
// calls it or when the decoration is created/destroyed
if( Shape::version() >= 0x11 ) // 1.1, has input shape support
{ // there appears to be no way to find out if a window has input
// shape set or not, so always set propagate the input shape
// (it's the same like the bounding shape by default)
XShapeCombineMask( display(), frameId(), ShapeInput, 0, 0,
None, ShapeSet );
XShapeCombineShape( display(), frameId(), ShapeInput, 0, 0,
frameId(), ShapeBounding, ShapeSet );
XShapeCombineShape( display(), frameId(), ShapeInput,
clientPos().x(), clientPos().y(),
window(), ShapeBounding, ShapeSubtract );
@ -500,6 +499,7 @@ void Client::updateShape()
noborder = true;
updateDecoration( true );
}
updateShape();
}
void Client::setMask( const QRegion& reg, int mode )