You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.1 KiB
75 lines
2.1 KiB
/***************************************************************** |
|
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
|
|
|