1
/********************************************************************
2
KWin - the KDE window manager
3
This file is part of the KDE project.
5
Copyright (C) 2007 Philip Falkner <philip.falkner@gmail.com>
7
This program is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 2 of the License, or
10
(at your option) any later version.
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with this program. If not, see <http://www.gnu.org/licenses/>.
19
*********************************************************************/
21
#ifndef KWIN_BOXSWITCH_H
22
#define KWIN_BOXSWITCH_H
24
#include <kwineffects.h>
34
#include <kwinglutils.h>
35
#include <kwinxrenderutils.h>
37
#include "boxswitch_proxy.h"
49
virtual void reconfigure(ReconfigureFlags);
50
virtual void prePaintScreen(ScreenPrePaintData &data, int time);
51
virtual void paintScreen(int mask, QRegion region, ScreenPaintData& data);
52
virtual void postPaintScreen();
53
virtual void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time);
54
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
56
virtual void windowInputMouseEvent(Window w, QEvent* e);
57
virtual void* proxy();
58
void activateFromProxy(int mode, bool animate, bool showText, float positioningFactor);
59
void paintWindowsBox(const QRegion& region);
62
void slotWindowClosed(EffectWindow* w);
63
void slotTabBoxAdded(int mode);
64
void slotTabBoxClosed();
65
void slotTabBoxUpdated();
66
void slotWindowGeometryShapeChanged(EffectWindow *w, const QRect &old);
67
void slotWindowDamaged(EffectWindow* w, const QRect& damage);
73
void moveResizeInputWindow(int x, int y, int width, int height);
74
void calculateFrameSize();
75
void calculateItemSizes();
76
void setSelectedWindow(EffectWindow* w);
78
void paintWindowThumbnail(EffectWindow* w);
79
void paintDesktopThumbnail(int iDesktop);
80
void paintWindowIcon(EffectWindow* w);
86
EffectFrame* thumbnailFrame;
90
QSize item_max_size; // maximum item display size (including highlight)
94
QColor color_highlight;
99
QHash< EffectWindow*, ItemInfo* > windows;
100
EffectWindowList original_windows;
101
EffectWindowList referrencedWindows;
102
EffectWindow* selected_window;
103
QHash< int, ItemInfo* > desktops;
104
QList< int > original_desktops;
105
int selected_desktop;
107
int painting_desktop;
110
QTimeLine activeTimeLine;
113
QRect highlight_area;
114
bool highlight_is_set;
120
QQueue<Direction> scheduled_directions;
121
EffectWindow* edge_window;
122
EffectWindow* right_window;
125
bool secondaryTabBox;
127
BoxSwitchEffectProxy mProxy;
128
bool mProxyActivated;
129
bool mProxyAnimateSwitch;
131
float mPositioningFactor;
134
class BoxSwitchEffect::ItemInfo
139
QRect area; // maximal painting area, including any frames/highlights/etc.
142
EffectFrame* iconFrame;