35    : m_isScreenLocker(surface->client() == 
waylandServer()->screenLockerClientConnection())
 
   44            this, &WaylandWindow::updateIcon);
 
 
   53    return std::make_unique<WindowItemWayland>(
this, scene);
 
 
   58    return m_captionNormal;
 
 
   63    return m_captionSuffix;
 
 
   78    return m_isScreenLocker;
 
 
   99    if (
width > area.width()) {
 
  100        width = area.width();
 
  102    if (
height > area.height()) {
 
  105    return QRectF(geometry.topLeft(), QSizeF(
width, 
height));
 
 
  114    if (c->processId() == getpid() || c->processId() == 0) {
 
  118    ::kill(c->processId(), SIGTERM);
 
 
  135    if (
auto s = other->
surface()) {
 
 
  145    return std::any_of(clients.constBegin(), clients.constEnd(),
 
  147                           if (belongsToSameApplication(client, SameApplicationChecks())) {
 
  148                               return client->isDesktop();
 
 
  154void WaylandWindow::updateClientOutputs()
 
  159    surface()->setOutputs(
waylandServer()->display()->outputsIntersecting(frameGeometry().toAlignedRect()),
 
  160                          waylandServer()->display()->largestIntersectingOutput(frameGeometry().toAlignedRect()));
 
  162        surface()->setPreferredBufferScale(output()->scale());
 
  163        surface()->setPreferredBufferTransform(output()->transform());
 
  164        surface()->setPreferredColorDescription(output()->colorDescription());
 
 
  168void WaylandWindow::updateIcon()
 
  170    const QString waylandIconName = QStringLiteral(
"wayland");
 
  171    const QString dfIconName = iconFromDesktopFile();
 
  172    const QString iconName = dfIconName.isEmpty() ? waylandIconName : dfIconName;
 
  173    if (iconName == icon().name()) {
 
  176    setIcon(QIcon::fromTheme(iconName));
 
  179void WaylandWindow::updateResourceName()
 
  181    const QFileInfo fileInfo(surface()->client()->executablePath());
 
  182    if (fileInfo.exists()) {
 
  183        const QByteArray executableFileName = fileInfo.fileName().toUtf8();
 
  184        setResourceClass(executableFileName, executableFileName);
 
  188void WaylandWindow::updateCaption()
 
  190    const QString suffix = shortcutCaptionSuffix();
 
  191    if (m_captionSuffix != suffix) {
 
  192        m_captionSuffix = suffix;
 
  193        Q_EMIT captionChanged();
 
 
  197void WaylandWindow::setCaption(
const QString &caption)
 
  199    const QString simplified = caption.simplified();
 
  200    if (m_captionNormal != simplified) {
 
  201        m_captionNormal = simplified;
 
  202        Q_EMIT captionNormalChanged();
 
  203        Q_EMIT captionChanged();
 
 
  207void WaylandWindow::doSetActive()
 
 
  215void WaylandWindow::cleanGrouping()
 
  220    if (transientFor()) {
 
  221        transientFor()->removeTransientFromList(
this);
 
  222        setTransientFor(
nullptr);
 
  225    const auto children = transients();
 
  226    for (
Window *transient : children) {
 
  227        removeTransientFromList(transient);
 
  228        transient->setTransientFor(
nullptr);
 
 
  232QRectF WaylandWindow::frameRectToBufferRect(
const QRectF &rect)
 const 
  234    return QRectF(rect.topLeft(), surface()->size());
 
 
  237void WaylandWindow::updateGeometry(
const QRectF &rect)
 
  239    const QRectF oldClientGeometry = m_clientGeometry;
 
  240    const QRectF oldFrameGeometry = m_frameGeometry;
 
  241    const QRectF oldBufferGeometry = m_bufferGeometry;
 
  242    const Output *oldOutput = m_output;
 
  244    m_clientGeometry = frameRectToClientRect(rect);
 
  245    m_frameGeometry = rect;
 
  246    m_bufferGeometry = frameRectToBufferRect(rect);
 
  248    WaylandGeometryTypes changedGeometries;
 
  250    if (m_clientGeometry != oldClientGeometry) {
 
  253    if (m_frameGeometry != oldFrameGeometry) {
 
  256    if (m_bufferGeometry != oldBufferGeometry) {
 
  260    if (!changedGeometries) {
 
  265    updateWindowRules(Rules::Position | Rules::Size);
 
  268        Q_EMIT bufferGeometryChanged(oldBufferGeometry);
 
  271        Q_EMIT clientGeometryChanged(oldClientGeometry);
 
  274        Q_EMIT frameGeometryChanged(oldFrameGeometry);
 
  276    if (oldOutput != m_output) {
 
  277        Q_EMIT outputChanged();
 
 
  281void WaylandWindow::markAsMapped()
 
  283    if (Q_UNLIKELY(!ready_for_painting)) {
 
  285        setReadyForPainting();
 
 
  291#include "moc_waylandwindow.cpp" 
Resource representing a wl_surface.
ClientConnection * client() const
QList< Window * > windows() const
QString captionSuffix() const override
bool isLocalhost() const override
bool belongsToSameApplication(const Window *other, SameApplicationChecks checks) const override
bool isClient() const override
QString windowRole() const override
QString captionNormal() const override
void killWindow() override
std::unique_ptr< WindowItem > createItem(Scene *scene) override
pid_t pid() const override
bool belongsToDesktop() const override
void updateClientOutputs()
QRectF resizeWithChecks(const QRectF &geometry, const QSizeF &size) override
bool isLockScreen() const override
Window * findModal(bool allow_itself=false) override
SurfaceInterface * surface() const
void desktopFileNameChanged()
void frameGeometryChanged(const QRectF &oldGeometry)
QPointer< Decoration::DecoratedClientImpl > client
QRectF clientArea(clientAreaOption, const Output *output, const VirtualDesktop *desktop) const
Output * outputAt(const QPointF &pos) const
WaylandServer * waylandServer()