ad4f183a76
The main idea behind _NET_WM_FRAME_OVERLAP is to extend the borders of the server-side decoration so the application can draw on top of it. It was inspired by similar feature in Windows. However, _NET_WM_FRAME_OVERLAP is basically unused. Neither GTK nor Qt support it and I have never seen any application that uses it. At the moment, kwin is the only compositing window manager that supports _NET_WM_FRAME_OVERLAP. Neither mutter nor compiz nor compton and so on support it. Since _NET_WM_FRAME_OVERLAP is practically unused, there's no point for keeping supporting it. This change shouldn't affect any existing app as _NET_WM_FRAME_OVERLAP atom is not listed in _NET_SUPPORTED.
56 lines
1.4 KiB
C++
56 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);
|
|
int desktop() const override;
|
|
QStringList activities() const override;
|
|
QVector<VirtualDesktop *> desktops() const override;
|
|
QPoint clientPos() 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
|