/***************************************************************** KWin - the KDE window manager This file is part of the KDE project. Copyright (C) 2007 Lubos Lunak <l.lunak@kde.org> 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