0d81d1d7c0
The only task of the PaintRedirector is to redirect the painting of the window decorations into Pixmaps. So it should actually do this by also handling the four pixmaps for the decoration. This simplifies the code as all the logic concerning redirecting the painting is now grouped together. Furthermore the PaintRedirector is now a child of the decoration widget, which means it gets automatically destroyed whenever the decoration is destroyed - the Client does not have to care about it. Also the PaintRedirector gets only created if the Compositor is active as it is not needed in the non-compositing case. REVIEW: 106620
94 lines
2.8 KiB
C++
94 lines
2.8 KiB
C++
/********************************************************************
|
|
KWin - the KDE window manager
|
|
This file is part of the KDE project.
|
|
|
|
Copyright (C) 2006 Lubos Lunak <l.lunak@kde.org>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*********************************************************************/
|
|
|
|
#ifndef KWIN_DELETED_H
|
|
#define KWIN_DELETED_H
|
|
|
|
#include "toplevel.h"
|
|
|
|
namespace KWin
|
|
{
|
|
class PaintRedirector;
|
|
|
|
class Deleted
|
|
: public Toplevel
|
|
{
|
|
Q_OBJECT
|
|
Q_PROPERTY(bool minimized READ isMinimized)
|
|
public:
|
|
static Deleted* create(Toplevel* c);
|
|
// used by effects to keep the window around for e.g. fadeout effects when it's destroyed
|
|
void refWindow();
|
|
void unrefWindow(bool delay = false);
|
|
void discard(allowed_t);
|
|
virtual int desktop() const;
|
|
virtual QStringList activities() const;
|
|
virtual QPoint clientPos() const;
|
|
virtual QSize clientSize() const;
|
|
virtual QRect transparentRect() const;
|
|
virtual bool isDeleted() const;
|
|
bool noBorder() const {
|
|
return no_border;
|
|
}
|
|
void layoutDecorationRects(QRect &left, QRect &top, QRect &right, QRect &bottom, int unused = 0) const;
|
|
QRect decorationRect() const;
|
|
virtual Layer layer() const {
|
|
return m_layer;
|
|
}
|
|
bool isMinimized() const {
|
|
return m_minimized;
|
|
}
|
|
NET::WindowType windowType(bool direct = false, int supported_types = 0) const;
|
|
PaintRedirector *decorationPaintRedirector() {
|
|
return m_paintRedirector;
|
|
}
|
|
protected:
|
|
virtual void debug(QDebug& stream) const;
|
|
virtual bool shouldUnredirect() const;
|
|
private:
|
|
Deleted(Workspace *ws); // use create()
|
|
void copyToDeleted(Toplevel* c);
|
|
virtual ~Deleted(); // deleted only using unrefWindow()
|
|
int delete_refcount;
|
|
double window_opacity;
|
|
int desk;
|
|
QStringList activityList;
|
|
QRect contentsRect; // for clientPos()/clientSize()
|
|
QRect transparent_rect;
|
|
|
|
bool no_border;
|
|
QRect decoration_left;
|
|
QRect decoration_right;
|
|
QRect decoration_top;
|
|
QRect decoration_bottom;
|
|
int padding_left, padding_top, padding_right, padding_bottom;
|
|
Layer m_layer;
|
|
bool m_minimized;
|
|
PaintRedirector *m_paintRedirector;
|
|
};
|
|
|
|
inline void Deleted::refWindow()
|
|
{
|
|
++delete_refcount;
|
|
}
|
|
|
|
} // namespace
|
|
|
|
#endif
|