Clip with shaped windows.

BUG: 160141  


svn path=/trunk/KDE/kdebase/workspace/; revision=805221
icc-effect-5.14.5
Luboš Luňák 2008-05-07 21:35:36 +00:00
parent 15b8079334
commit e3040b1938
1 changed files with 8 additions and 0 deletions

View File

@ -496,6 +496,13 @@ void SceneXrender::Window::performPaint( int mask, QRegion region, WindowPaintDa
}
if( x != toplevel->x() || y != toplevel->y())
transformed_shape.translate( x, y );
QRegion sh = shape();
if( sh != rect()) // is shaped, need additional clipping
{
XserverRegion clip = toXserverRegion( sh );
XFixesSetPictureClipRegion( display(), pic, 0, 0, clip );
XFixesDestroyRegion( display(), clip );
}
PaintClipper pc( region );
for( PaintClipper::Iterator iterator;
!iterator.isDone();
@ -525,6 +532,7 @@ void SceneXrender::Window::performPaint( int mask, QRegion region, WindowPaintDa
if( filter == ImageFilterGood )
XRenderSetPictureFilter( display(), pic, const_cast< char* >( "fast" ), NULL, 0 );
}
XFixesSetPictureClipRegion( display(), pic, 0, 0, None );
}
} // namespace