/***************************************************************** KWin - the KDE window manager This file is part of the KDE project. Copyright (C) 2007 Lubos Lunak You can Freely distribute this program under the GNU General Public License. See the file "COPYING" for the exact licensing terms. ******************************************************************/ /* Testing of painting a window more than once. The active window is painted once more as a thumbnail in the bottom-right corner of the screen. */ #include "test_thumbnail.h" namespace KWin { KWIN_EFFECT( test_thumbnail, TestThumbnailEffect ) TestThumbnailEffect::TestThumbnailEffect() : active_window( NULL ) { } void TestThumbnailEffect::paintScreen( int mask, QRegion region, ScreenPaintData& data ) { effects->paintScreen( mask, region, data ); if( active_window != NULL && region.contains( thumbnailRect())) { WindowPaintData data( active_window ); QRect region; setPositionTransformations( data, region, active_window, thumbnailRect(), Qt::KeepAspectRatio ); effects->drawWindow( active_window, PAINT_WINDOW_OPAQUE | PAINT_WINDOW_TRANSLUCENT | PAINT_WINDOW_TRANSFORMED, region, data ); } } void TestThumbnailEffect::windowActivated( EffectWindow* act ) { active_window = act; effects->addRepaint( thumbnailRect()); } void TestThumbnailEffect::windowDamaged( EffectWindow* w, const QRect& ) { if( w == active_window ) effects->addRepaint( thumbnailRect()); // TODO maybe just the relevant part of the area should be repainted? } void TestThumbnailEffect::windowGeometryShapeChanged( EffectWindow* w, const QRect& old ) { if( w == active_window && w->size() != old.size()) effects->addRepaint( thumbnailRect()); } void TestThumbnailEffect::windowClosed( EffectWindow* w ) { if( w == active_window ) { active_window = NULL; effects->addRepaint( thumbnailRect()); } } QRect TestThumbnailEffect::thumbnailRect() const { return QRect( displayWidth() - 100, displayHeight() - 100, 100, 100 ); } } // namespace