QWaylandSurfaceRole Class

The QWaylandSurfaceRole class represents the role of the surface in context of wl_surface. More...

Header: #include <QWaylandSurfaceRole>
CMake: find_package(Qt6 REQUIRED COMPONENTS WaylandCompositor)
target_link_libraries(mytarget PRIVATE Qt6::WaylandCompositor)
qmake: QT += waylandcompositor

Public Functions

QWaylandSurfaceRole(const QByteArray &name)
const QByteArray name()

Detailed Description

QWaylandSurfaceRole is used to represent the role of a QWaylandSurface. According to the protocol specification, the role of a surface is permanent once set, and if the same surface is later reused for a different role, this constitutes a protocol error. Setting the surface to the same role multiple times is not an error.

As an example, the QWaylandXdgShell can assign either "popup" or "toplevel" roles to surfaces. If get_toplevel is requested on a surface which has previously received a get_popup request, then the compositor will issue a protocol error.

Roles are compared by pointer value, so any two objects of QWaylandSurfaceRole will be considered different roles, regardless of what their names are. A typical way of assigning a role is to have a static QWaylandSurfaceRole object to represent it.

class MyShellSurfaceSubType
{
    static QWaylandSurfaceRole s_role;
    // ...
};

// ...

surface->setRole(&MyShellSurfaceSubType::s_role, resource->handle, MY_ERROR_CODE);

Member Function Documentation

QWaylandSurfaceRole::QWaylandSurfaceRole(const QByteArray &name)

Creates a QWaylandSurfaceRole and assigns it name. The name is used in error messages involving this QWaylandSurfaceRole.

const QByteArray QWaylandSurfaceRole::name()

Returns the name of the QWaylandSurfaceRole. The name is used in error messages involving this QWaylandSurfaceRole, for example if an attempt is made to change the role of a surface.

© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.