2007-04-16 17:25:02 +00:00
|
|
|
/*****************************************************************
|
|
|
|
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.
|
|
|
|
******************************************************************/
|
|
|
|
|
|
|
|
#ifndef KWIN_DESKTOPGRID_H
|
|
|
|
#define KWIN_DESKTOPGRID_H
|
|
|
|
|
|
|
|
#include <kwineffects.h>
|
|
|
|
#include <qobject.h>
|
|
|
|
|
|
|
|
namespace KWin
|
|
|
|
{
|
|
|
|
|
|
|
|
class DesktopGridEffect
|
|
|
|
: public QObject, public Effect
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
DesktopGridEffect();
|
|
|
|
virtual void prePaintScreen( int* mask, QRegion* region, int time );
|
|
|
|
virtual void paintScreen( int mask, QRegion region, ScreenPaintData& data );
|
|
|
|
virtual void postPaintScreen();
|
|
|
|
virtual void prePaintWindow( EffectWindow* w, int* mask, QRegion* paint, QRegion* clip, int time );
|
2007-04-16 19:09:21 +00:00
|
|
|
virtual void paintWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data );
|
2007-04-16 22:47:51 +00:00
|
|
|
virtual void windowClosed( EffectWindow* w );
|
2007-04-16 17:25:02 +00:00
|
|
|
virtual void desktopChanged( int old );
|
2007-04-16 19:09:21 +00:00
|
|
|
virtual void windowInputMouseEvent( Window w, QEvent* e );
|
|
|
|
virtual void grabbedKeyboardEvent( QKeyEvent* e );
|
2007-04-16 17:25:02 +00:00
|
|
|
private slots:
|
|
|
|
void toggle();
|
|
|
|
private:
|
2007-04-16 19:09:21 +00:00
|
|
|
QRect desktopRect( int desktop, bool scaled ) const;
|
|
|
|
int posToDesktop( const QPoint& pos ) const;
|
2007-04-16 22:47:51 +00:00
|
|
|
QRect windowRect( EffectWindow* w ) const; // returns always scaled
|
2007-04-21 12:29:43 +00:00
|
|
|
EffectWindow* windowAt( const QPoint& pos, QRect* rect = NULL ) const;
|
2007-04-16 19:09:21 +00:00
|
|
|
void setActive( bool active );
|
|
|
|
void setup();
|
|
|
|
void finish();
|
2007-04-16 19:30:48 +00:00
|
|
|
void paintSlide( int mask, QRegion region, const ScreenPaintData& data );
|
2007-04-21 10:26:02 +00:00
|
|
|
void paintScreenDesktop( int desktop, int mask, QRegion region, ScreenPaintData data );
|
2007-04-16 19:30:48 +00:00
|
|
|
void slideDesktopChanged( int old );
|
2007-04-16 17:25:02 +00:00
|
|
|
float progress;
|
|
|
|
bool activated;
|
|
|
|
int painting_desktop;
|
2007-04-16 19:09:21 +00:00
|
|
|
int hover_desktop;
|
|
|
|
Window input;
|
|
|
|
bool keyboard_grab;
|
2007-04-16 22:47:51 +00:00
|
|
|
bool was_window_move;
|
|
|
|
EffectWindow* window_move;
|
|
|
|
QPoint window_move_diff;
|
|
|
|
QPoint window_move_pos;
|
2007-04-16 19:30:48 +00:00
|
|
|
bool slide;
|
|
|
|
QPoint slide_start_pos;
|
|
|
|
bool slide_painting_sticky;
|
|
|
|
QPoint slide_painting_diff;
|
2007-04-16 17:25:02 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
#endif
|