kwin/src/deleted.cpp

132 lines
2.5 KiB
C++
Raw Normal View History

2020-08-02 22:22:19 +00:00
/*
KWin - the KDE window manager
This file is part of the KDE project.
2020-08-02 22:22:19 +00:00
SPDX-FileCopyrightText: 2006 Lubos Lunak <l.lunak@kde.org>
2020-08-02 22:22:19 +00:00
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "deleted.h"
#include "group.h"
#include "netinfo.h"
#include "shadow.h"
#include "virtualdesktops.h"
#include "workspace.h"
#include <QDebug>
namespace KWin
{
Deleted::Deleted()
2022-04-22 17:39:12 +00:00
: Window()
, m_frame(XCB_WINDOW_NONE)
, m_layer(UnknownLayer)
, m_shade(false)
, m_fullscreen(false)
, m_wasPopupWindow(false)
, m_wasOutline(false)
, m_wasLockScreen(false)
2011-01-30 14:34:42 +00:00
{
}
Deleted::~Deleted()
2011-01-30 14:34:42 +00:00
{
if (workspace()) {
workspace()->removeDeleted(this);
}
2011-01-30 14:34:42 +00:00
}
std::unique_ptr<WindowItem> Deleted::createItem(Scene *scene)
{
Q_UNREACHABLE();
}
2022-04-22 17:39:12 +00:00
Deleted *Deleted::create(Window *c)
2011-01-30 14:34:42 +00:00
{
Deleted *d = new Deleted();
2011-01-30 14:34:42 +00:00
d->copyToDeleted(c);
workspace()->addDeleted(d, c);
return d;
2011-01-30 14:34:42 +00:00
}
2022-04-22 17:39:12 +00:00
void Deleted::copyToDeleted(Window *window)
{
Q_ASSERT(!window->isDeleted());
2022-04-22 17:39:12 +00:00
Window::copyToDeleted(window);
desk = window->desktop();
m_desktops = window->desktops();
activityList = window->activities();
contentsRect = QRectF(window->clientPos(), window->clientSize());
m_layer = window->layer();
m_frame = window->frameId();
m_type = window->windowType();
m_windowRole = window->windowRole();
m_shade = window->isShade();
m_mainWindows = window->mainWindows();
for (Window *w : std::as_const(m_mainWindows)) {
connect(w, &Window::closed, this, &Deleted::mainWindowClosed);
}
m_fullscreen = window->isFullScreen();
m_caption = window->caption();
for (auto vd : std::as_const(m_desktops)) {
connect(vd, &QObject::destroyed, this, [=, this] {
m_desktops.removeOne(vd);
});
}
m_wasPopupWindow = window->isPopupWindow();
m_wasOutline = window->isOutline();
m_wasLockScreen = window->isLockScreen();
2011-01-30 14:34:42 +00:00
}
int Deleted::desktop() const
2011-01-30 14:34:42 +00:00
{
return desk;
2011-01-30 14:34:42 +00:00
}
QStringList Deleted::activities() const
2011-01-30 14:34:42 +00:00
{
return activityList;
2011-01-30 14:34:42 +00:00
}
QVector<VirtualDesktop *> Deleted::desktops() const
{
return m_desktops;
}
QPointF Deleted::clientPos() const
2011-01-30 14:34:42 +00:00
{
return contentsRect.topLeft();
2011-01-30 14:34:42 +00:00
}
bool Deleted::isDeleted() const
{
return true;
}
NET::WindowType Deleted::windowType(bool direct, int supportedTypes) const
{
return m_type;
}
void Deleted::mainWindowClosed(Window *window)
{
m_mainWindows.removeAll(window);
}
xcb_window_t Deleted::frameId() const
{
return m_frame;
}
QString Deleted::windowRole() const
{
return m_windowRole;
}
} // namespace