kwin/effects/thumbnailaside/thumbnailaside.h
Vlad Zahorodnii 1fb9f6f13a Switch to SPDX license markers
The main advantage of SPDX license identifiers over the traditional
license headers is that it's more difficult to overlook inappropriate
licenses for kwin, for example GPL 3. We also don't have to copy a
lot of boilerplate text.

In order to create this change, I ran licensedigger -r -c from the
toplevel source directory.
2020-08-07 19:57:56 +00:00

80 lines
2.1 KiB
C++

/********************************************************************
KWin - the KDE window manager
This file is part of the KDE project.
SPDX-FileCopyrightText: 2007 Lubos Lunak <l.lunak@kde.org>
SPDX-FileCopyrightText: 2007 Christian Nitschkowski <christian.nitschkowski@kdemail.net>
SPDX-License-Identifier: GPL-2.0-or-later
*********************************************************************/
/*
Testing of painting a window more than once.
*/
#ifndef KWIN_THUMBNAILASIDE_H
#define KWIN_THUMBNAILASIDE_H
#include <kwineffects.h>
#include <QHash>
namespace KWin
{
class ThumbnailAsideEffect
: public Effect
{
Q_OBJECT
Q_PROPERTY(int maxWidth READ configuredMaxWidth)
Q_PROPERTY(int spacing READ configuredSpacing)
Q_PROPERTY(qreal opacity READ configuredOpacity)
Q_PROPERTY(int screen READ configuredScreen)
public:
ThumbnailAsideEffect();
void reconfigure(ReconfigureFlags) override;
void paintScreen(int mask, const QRegion &region, ScreenPaintData& data) override;
void paintWindow(EffectWindow *w, int mask, QRegion region, WindowPaintData &data) override;
// for properties
int configuredMaxWidth() const {
return maxwidth;
}
int configuredSpacing() const {
return spacing;
}
qreal configuredOpacity() const {
return opacity;
}
int configuredScreen() const {
return screen;
}
private Q_SLOTS:
void toggleCurrentThumbnail();
void slotWindowClosed(KWin::EffectWindow *w);
void slotWindowFrameGeometryChanged(KWin::EffectWindow *w, const QRect &old);
void slotWindowDamaged(KWin::EffectWindow* w, const QRect& damage);
bool isActive() const override;
void repaintAll();
private:
void addThumbnail(EffectWindow* w);
void removeThumbnail(EffectWindow* w);
void arrange();
struct Data {
EffectWindow* window; // the same like the key in the hash (makes code simpler)
int index;
QRect rect;
};
QHash< EffectWindow*, Data > windows;
int maxwidth;
int spacing;
double opacity;
int screen;
QRegion painted;
};
} // namespace
#endif