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.
59 lines
1.6 KiB
59 lines
1.6 KiB
/***************************************************************** |
|
KWin - the KDE window manager |
|
This file is part of the KDE project. |
|
|
|
Copyright (C) 2006 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. |
|
******************************************************************/ |
|
|
|
#include "demo_shiftworkspaceup.h" |
|
|
|
namespace KWin |
|
{ |
|
|
|
KWIN_EFFECT( demo_shiftworkspaceup, ShiftWorkspaceUpEffect ) |
|
|
|
ShiftWorkspaceUpEffect::ShiftWorkspaceUpEffect() |
|
: up( false ) |
|
, diff( 0 ) |
|
{ |
|
connect( &timer, SIGNAL( timeout()), SLOT( tick())); |
|
timer.start( 2000 ); |
|
} |
|
|
|
void ShiftWorkspaceUpEffect::prePaintScreen( ScreenPrePaintData& data, int time ) |
|
{ |
|
if( up && diff < 1000 ) |
|
diff = qBound( 0, diff + time, 1000 ); // KDE3: note this differs from KCLAMP |
|
if( !up && diff > 0 ) |
|
diff = qBound( 0, diff - time, 1000 ); |
|
if( diff != 0 ) |
|
data.mask |= PAINT_SCREEN_TRANSFORMED; |
|
effects->prePaintScreen( data, time ); |
|
} |
|
|
|
void ShiftWorkspaceUpEffect::paintScreen( int mask, QRegion region, ScreenPaintData& data ) |
|
{ |
|
if( diff != 0 ) |
|
data.yTranslate -= diff / 100; |
|
effects->paintScreen( mask, region, data ); |
|
} |
|
|
|
void ShiftWorkspaceUpEffect::postPaintScreen() |
|
{ |
|
if( up ? diff < 1000 : diff > 0 ) |
|
effects->addRepaintFull(); // trigger next animation repaint |
|
effects->postPaintScreen(); |
|
} |
|
|
|
void ShiftWorkspaceUpEffect::tick() |
|
{ |
|
up = !up; |
|
effects->addRepaintFull(); |
|
} |
|
|
|
} // namespace |
|
|
|
#include "demo_shiftworkspaceup.moc"
|
|
|