kwin/src/unmanaged.h
Vlad Zahorodnii a9d5b84596 scene: Refactor damage teardown in X11SurfaceItem
This introduces the markedAsZombie signal, which is emitted when the
window is about to become deleted. The X11SurfaceItem uses this signal
to determine when the damage must be destroyed.
2021-03-31 13:56:55 +00:00

58 lines
1.4 KiB
C++

/*
KWin - the KDE window manager
This file is part of the KDE project.
SPDX-FileCopyrightText: 2006 Lubos Lunak <l.lunak@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef KWIN_UNMANAGED_H
#define KWIN_UNMANAGED_H
#include <netwm.h>
#include "toplevel.h"
namespace KWin
{
class KWIN_EXPORT Unmanaged : public Toplevel
{
Q_OBJECT
public:
explicit Unmanaged();
bool windowEvent(xcb_generic_event_t *e);
bool track(xcb_window_t w);
bool hasScheduledRelease() const;
static void deleteUnmanaged(Unmanaged* c);
QRect bufferGeometry() const override;
int desktop() const override;
QStringList activities() const override;
QVector<VirtualDesktop *> desktops() const override;
QPoint clientPos() const override;
QRect transparentRect() const override;
Layer layer() const override {
return UnmanagedLayer;
}
NET::WindowType windowType(bool direct = false, int supported_types = 0) const override;
bool isOutline() const override;
public Q_SLOTS:
void release(ReleaseReason releaseReason = ReleaseReason::Release);
private:
~Unmanaged() override; // use release()
// handlers for X11 events
void configureNotifyEvent(xcb_configure_notify_event_t *e);
void damageNotifyEvent();
QWindow *findInternalWindow() const;
void associate();
void initialize();
bool m_outline = false;
bool m_scheduledRelease = false;
};
} // namespace
#endif