import QtQuick.tooling 1.2

// This file describes the plugin-supplied types contained in the library.
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
// 'qmlplugindump -nonrelocatable QtWayland.Compositor 1.0'

Module {
    dependencies: ["QtQuick 2.0", "QtQuick.Window 2.2"]
    Component {
        name: "QWaylandClient"
        prototype: "QObject"
        exports: ["QtWayland.Compositor/WaylandClient 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
        Property { name: "compositor"; type: "QWaylandCompositor"; isReadonly: true; isPointer: true }
        Property { name: "userId"; type: "qlonglong"; isReadonly: true }
        Property { name: "groupId"; type: "qlonglong"; isReadonly: true }
        Property { name: "processId"; type: "qlonglong"; isReadonly: true }
        Method { name: "close" }
        Method {
            name: "kill"
            Parameter { name: "signal"; type: "int" }
        }
        Method { name: "kill" }
    }
    Component {
        name: "QWaylandCompositor"
        prototype: "QWaylandObject"
        exports: ["QtWayland.Compositor/WaylandCompositorBase 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
        Property { name: "socketName"; type: "QByteArray" }
        Property { name: "created"; type: "bool"; isReadonly: true }
        Property { name: "retainedSelection"; type: "bool" }
        Property { name: "defaultOutput"; type: "QWaylandOutput"; isPointer: true }
        Property { name: "useHardwareIntegrationExtension"; type: "bool" }
        Property { name: "defaultSeat"; type: "QWaylandSeat"; isReadonly: true; isPointer: true }
        Signal {
            name: "socketNameChanged"
            Parameter { name: "socketName"; type: "QByteArray" }
        }
        Signal {
            name: "retainedSelectionChanged"
            Parameter { name: "retainedSelection"; type: "bool" }
        }
        Signal {
            name: "surfaceRequested"
            Parameter { name: "client"; type: "QWaylandClient"; isPointer: true }
            Parameter { name: "id"; type: "uint" }
            Parameter { name: "version"; type: "int" }
        }
        Signal {
            name: "surfaceCreated"
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
        }
        Signal {
            name: "surfaceAboutToBeDestroyed"
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
        }
        Signal {
            name: "subsurfaceChanged"
            Parameter { name: "child"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "parent"; type: "QWaylandSurface"; isPointer: true }
        }
        Signal {
            name: "defaultSeatChanged"
            Parameter { name: "newDevice"; type: "QWaylandSeat"; isPointer: true }
            Parameter { name: "oldDevice"; type: "QWaylandSeat"; isPointer: true }
        }
        Signal {
            name: "outputAdded"
            Parameter { name: "output"; type: "QWaylandOutput"; isPointer: true }
        }
        Signal {
            name: "outputRemoved"
            Parameter { name: "output"; type: "QWaylandOutput"; isPointer: true }
        }
        Method { name: "processWaylandEvents" }
        Method {
            name: "destroyClientForSurface"
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
        }
        Method {
            name: "destroyClient"
            Parameter { name: "client"; type: "QWaylandClient"; isPointer: true }
        }
        Method {
            name: "outputFor"
            type: "QWaylandOutput*"
            Parameter { name: "window"; type: "QWindow"; isPointer: true }
        }
    }
    Component {
        name: "QWaylandCompositorExtension"
        prototype: "QWaylandObject"
        exports: ["QtWayland.Compositor/WaylandExtension 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
    }
    Component {
        name: "QWaylandDrag"
        prototype: "QObject"
        exports: ["QtWayland.Compositor/WaylandDrag 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
        Property { name: "icon"; type: "QWaylandSurface"; isReadonly: true; isPointer: true }
        Property { name: "visible"; type: "bool"; isReadonly: true }
        Signal { name: "dragStarted" }
        Method {
            name: "dragMove"
            Parameter { name: "target"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "pos"; type: "QPointF" }
        }
        Method { name: "drop" }
        Method { name: "cancelDrag" }
    }
    Component {
        name: "QWaylandIviApplication"
        prototype: "QWaylandCompositorExtension"
        Signal {
            name: "iviSurfaceRequested"
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "iviId"; type: "uint" }
            Parameter { name: "resource"; type: "QWaylandResource" }
        }
        Signal {
            name: "iviSurfaceCreated"
            Parameter { name: "iviSurface"; type: "QWaylandIviSurface"; isPointer: true }
        }
    }
    Component {
        name: "QWaylandIviApplicationQuickExtension"
        defaultProperty: "data"
        prototype: "QWaylandIviApplication"
        exports: ["QtWayland.Compositor/IviApplication 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
    }
    Component {
        name: "QWaylandIviSurface"
        prototype: "QWaylandShellSurface"
        exports: ["QtWayland.Compositor/IviSurface 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "surface"; type: "QWaylandSurface"; isReadonly: true; isPointer: true }
        Property { name: "iviId"; type: "uint"; isReadonly: true }
        Method {
            name: "initialize"
            Parameter { name: "iviApplication"; type: "QWaylandIviApplication"; isPointer: true }
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "iviId"; type: "uint" }
            Parameter { name: "resource"; type: "QWaylandResource" }
        }
        Method {
            name: "sendConfigure"
            Parameter { name: "size"; type: "QSize" }
        }
    }
    Component {
        name: "QWaylandKeymap"
        prototype: "QObject"
        exports: ["QtWayland.Compositor/WaylandKeymap 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "layout"; type: "string" }
        Property { name: "variant"; type: "string" }
        Property { name: "options"; type: "string" }
        Property { name: "rules"; type: "string" }
        Property { name: "model"; type: "string" }
    }
    Component {
        name: "QWaylandMouseTracker"
        defaultProperty: "data"
        prototype: "QQuickItem"
        exports: ["QtWayland.Compositor/WaylandMouseTracker 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "mouseX"; type: "double"; isReadonly: true }
        Property { name: "mouseY"; type: "double"; isReadonly: true }
        Property { name: "containsMouse"; type: "bool"; isReadonly: true }
        Property { name: "windowSystemCursorEnabled"; type: "bool" }
        Signal { name: "hoveredChanged" }
    }
    Component { name: "QWaylandObject"; prototype: "QObject" }
    Component {
        name: "QWaylandOutput"
        prototype: "QWaylandObject"
        exports: ["QtWayland.Compositor/WaylandOutputBase 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
        Enum {
            name: "Subpixel"
            values: {
                "SubpixelUnknown": 0,
                "SubpixelNone": 1,
                "SubpixelHorizontalRgb": 2,
                "SubpixelHorizontalBgr": 3,
                "SubpixelVerticalRgb": 4,
                "SubpixelVerticalBgr": 5
            }
        }
        Enum {
            name: "Transform"
            values: {
                "TransformNormal": 0,
                "Transform90": 1,
                "Transform180": 2,
                "Transform270": 3,
                "TransformFlipped": 4,
                "TransformFlipped90": 5,
                "TransformFlipped180": 6,
                "TransformFlipped270": 7
            }
        }
        Property { name: "compositor"; type: "QWaylandCompositor"; isPointer: true }
        Property { name: "window"; type: "QWindow"; isPointer: true }
        Property { name: "manufacturer"; type: "string" }
        Property { name: "model"; type: "string" }
        Property { name: "position"; type: "QPoint" }
        Property { name: "geometry"; type: "QRect"; isReadonly: true }
        Property { name: "availableGeometry"; type: "QRect" }
        Property { name: "physicalSize"; type: "QSize" }
        Property { name: "subpixel"; type: "QWaylandOutput::Subpixel" }
        Property { name: "transform"; type: "QWaylandOutput::Transform" }
        Property { name: "scaleFactor"; type: "int" }
        Property { name: "sizeFollowsWindow"; type: "bool" }
        Signal { name: "modeAdded" }
        Signal { name: "currentModeChanged" }
        Signal { name: "physicalSizeFollowsSizeChanged" }
        Signal { name: "windowDestroyed" }
    }
    Component {
        name: "QWaylandQtWindowManager"
        prototype: "QWaylandCompositorExtension"
        Property { name: "showIsFullScreen"; type: "bool" }
        Signal {
            name: "openUrl"
            Parameter { name: "client"; type: "QWaylandClient"; isPointer: true }
            Parameter { name: "url"; type: "QUrl" }
        }
    }
    Component {
        name: "QWaylandQtWindowManagerQuickExtension"
        defaultProperty: "data"
        prototype: "QWaylandQtWindowManager"
        exports: ["QtWayland.Compositor/QtWindowManager 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
    }
    Component { name: "QWaylandQuickCompositor"; prototype: "QWaylandCompositor" }
    Component {
        name: "QWaylandQuickCompositorQuickExtensionContainer"
        defaultProperty: "data"
        prototype: "QWaylandQuickCompositor"
        exports: ["QtWayland.Compositor/WaylandCompositor 1.0"]
        exportMetaObjectRevisions: [0]
        Property {
            name: "extensions"
            type: "QWaylandCompositorExtension"
            isList: true
            isReadonly: true
        }
        Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
    }
    Component {
        name: "QWaylandQuickItem"
        defaultProperty: "data"
        prototype: "QQuickItem"
        exports: ["QtWayland.Compositor/WaylandQuickItem 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "compositor"; type: "QWaylandCompositor"; isReadonly: true; isPointer: true }
        Property { name: "surface"; type: "QWaylandSurface"; isPointer: true }
        Property { name: "paintEnabled"; type: "bool" }
        Property { name: "touchEventsEnabled"; type: "bool" }
        Property { name: "origin"; type: "QWaylandSurface::Origin"; isReadonly: true }
        Property { name: "inputEventsEnabled"; type: "bool" }
        Property { name: "focusOnClick"; type: "bool" }
        Property { name: "sizeFollowsSurface"; type: "bool" }
        Property { name: "subsurfaceHandler"; type: "QObject"; isPointer: true }
        Property { name: "output"; type: "QWaylandOutput"; isPointer: true }
        Property { name: "bufferLocked"; type: "bool" }
        Property { name: "allowDiscardFrontBuffer"; type: "bool" }
        Signal { name: "surfaceDestroyed" }
        Signal {
            name: "mouseMove"
            Parameter { name: "windowPosition"; type: "QPointF" }
        }
        Signal { name: "mouseRelease" }
        Method {
            name: "takeFocus"
            Parameter { name: "device"; type: "QWaylandSeat"; isPointer: true }
        }
        Method { name: "takeFocus" }
        Method {
            name: "setPaintEnabled"
            Parameter { name: "paintEnabled"; type: "bool" }
        }
        Method { name: "raise" }
        Method { name: "lower" }
        Method {
            name: "mapToSurface"
            type: "QPointF"
            Parameter { name: "point"; type: "QPointF" }
        }
        Method {
            name: "inputMethodQuery"
            type: "QVariant"
            Parameter { name: "query"; type: "Qt::InputMethodQuery" }
            Parameter { name: "argument"; type: "QVariant" }
        }
    }
    Component {
        name: "QWaylandQuickOutput"
        prototype: "QWaylandOutput"
        exports: ["QtWayland.Compositor/WaylandOutput 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "automaticFrameCallback"; type: "bool" }
        Method { name: "updateStarted" }
    }
    Component {
        name: "QWaylandQuickShellSurfaceItem"
        defaultProperty: "data"
        prototype: "QWaylandQuickItem"
        exports: ["QtWayland.Compositor/ShellSurfaceItem 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "shellSurface"; type: "QWaylandShellSurface"; isPointer: true }
        Property { name: "moveItem"; type: "QQuickItem"; isPointer: true }
    }
    Component {
        name: "QWaylandQuickSurface"
        prototype: "QWaylandSurface"
        exports: ["QtWayland.Compositor/WaylandSurface 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "useTextureAlpha"; type: "bool" }
        Property { name: "clientRenderingEnabled"; type: "bool" }
    }
    Component {
        name: "QWaylandResource"
        exports: ["QtWayland.Compositor/WaylandResource 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
    }
    Component {
        name: "QWaylandSeat"
        prototype: "QWaylandObject"
        exports: ["QtWayland.Compositor/WaylandSeat 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
        Enum {
            name: "CapabilityFlags"
            values: {
                "Pointer": 1,
                "Keyboard": 2,
                "Touch": 4,
                "DefaultCapabilities": 7
            }
        }
        Property { name: "drag"; type: "QWaylandDrag"; isReadonly: true; isPointer: true }
        Property { name: "keymap"; type: "QWaylandKeymap"; isReadonly: true; isPointer: true }
        Signal {
            name: "mouseFocusChanged"
            Parameter { name: "newFocus"; type: "QWaylandView"; isPointer: true }
            Parameter { name: "oldFocus"; type: "QWaylandView"; isPointer: true }
        }
        Signal {
            name: "keyboardFocusChanged"
            Parameter { name: "newFocus"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "oldFocus"; type: "QWaylandSurface"; isPointer: true }
        }
        Signal {
            name: "cursorSurfaceRequest"
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "hotspotX"; type: "int" }
            Parameter { name: "hotspotY"; type: "int" }
        }
    }
    Component {
        name: "QWaylandShell"
        prototype: "QWaylandCompositorExtension"
        exports: ["QtWayland.Compositor/Shell 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
        Enum {
            name: "FocusPolicy"
            values: {
                "AutomaticFocus": 0,
                "ManualFocus": 1
            }
        }
        Property { name: "focusPolicy"; type: "FocusPolicy" }
    }
    Component {
        name: "QWaylandShellSurface"
        prototype: "QWaylandCompositorExtension"
        exports: ["QtWayland.Compositor/ShellSurface 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
        Property { name: "windowType"; type: "Qt::WindowType"; isReadonly: true }
    }
    Component {
        name: "QWaylandSurface"
        prototype: "QWaylandObject"
        exports: ["QtWayland.Compositor/WaylandSurfaceBase 1.0"]
        isCreatable: false
        exportMetaObjectRevisions: [0]
        Enum {
            name: "Origin"
            values: {
                "OriginTopLeft": 0,
                "OriginBottomLeft": 1
            }
        }
        Property { name: "client"; type: "QWaylandClient"; isReadonly: true; isPointer: true }
        Property { name: "size"; type: "QSize"; isReadonly: true }
        Property { name: "bufferScale"; type: "int"; isReadonly: true }
        Property { name: "contentOrientation"; type: "Qt::ScreenOrientation"; isReadonly: true }
        Property { name: "origin"; type: "QWaylandSurface::Origin"; isReadonly: true }
        Property { name: "hasContent"; type: "bool"; isReadonly: true }
        Property { name: "cursorSurface"; type: "bool" }
        Signal {
            name: "damaged"
            Parameter { name: "rect"; type: "QRegion" }
        }
        Signal {
            name: "parentChanged"
            Parameter { name: "newParent"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "oldParent"; type: "QWaylandSurface"; isPointer: true }
        }
        Signal {
            name: "childAdded"
            Parameter { name: "child"; type: "QWaylandSurface"; isPointer: true }
        }
        Signal {
            name: "offsetForNextFrame"
            Parameter { name: "offset"; type: "QPoint" }
        }
        Signal { name: "surfaceDestroyed" }
        Signal {
            name: "subsurfacePositionChanged"
            Parameter { name: "position"; type: "QPoint" }
        }
        Signal {
            name: "subsurfacePlaceAbove"
            Parameter { name: "sibling"; type: "QWaylandSurface"; isPointer: true }
        }
        Signal {
            name: "subsurfacePlaceBelow"
            Parameter { name: "sibling"; type: "QWaylandSurface"; isPointer: true }
        }
        Signal {
            name: "dragStarted"
            Parameter { name: "drag"; type: "QWaylandDrag"; isPointer: true }
        }
        Signal {
            name: "configure"
            Parameter { name: "hasBuffer"; type: "bool" }
        }
        Signal { name: "redraw" }
        Method { name: "updateSelection" }
        Method {
            name: "initialize"
            Parameter { name: "compositor"; type: "QWaylandCompositor"; isPointer: true }
            Parameter { name: "client"; type: "QWaylandClient"; isPointer: true }
            Parameter { name: "id"; type: "uint" }
            Parameter { name: "version"; type: "int" }
        }
        Method { name: "destroy" }
        Method { name: "isDestroyed"; type: "bool" }
        Method { name: "frameStarted" }
        Method { name: "sendFrameCallbacks" }
    }
    Component { name: "QWaylandTextInputManager"; prototype: "QWaylandCompositorExtension" }
    Component {
        name: "QWaylandTextInputManagerQuickExtension"
        defaultProperty: "data"
        prototype: "QWaylandTextInputManager"
        exports: ["QtWayland.Compositor/TextInputManager 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
    }
    Component {
        name: "QWaylandWlShell"
        prototype: "QWaylandShell"
        Signal {
            name: "wlShellSurfaceRequested"
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "resource"; type: "QWaylandResource" }
        }
        Signal {
            name: "wlShellSurfaceCreated"
            Parameter { name: "shellSurface"; type: "QWaylandWlShellSurface"; isPointer: true }
        }
        Method { name: "closeAllPopups" }
    }
    Component {
        name: "QWaylandWlShellQuickExtension"
        defaultProperty: "data"
        prototype: "QWaylandWlShell"
        exports: ["QtWayland.Compositor/WlShell 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
    }
    Component {
        name: "QWaylandWlShellSurface"
        prototype: "QWaylandShellSurface"
        exports: ["QtWayland.Compositor/WlShellSurface 1.0"]
        exportMetaObjectRevisions: [0]
        Enum {
            name: "FullScreenMethod"
            values: {
                "DefaultFullScreen": 0,
                "ScaleFullScreen": 1,
                "DriverFullScreen": 2,
                "FillFullScreen": 3
            }
        }
        Enum {
            name: "ResizeEdge"
            values: {
                "NoneEdge": 0,
                "TopEdge": 1,
                "BottomEdge": 2,
                "LeftEdge": 4,
                "TopLeftEdge": 5,
                "BottomLeftEdge": 6,
                "RightEdge": 8,
                "TopRightEdge": 9,
                "BottomRightEdge": 10
            }
        }
        Property { name: "surface"; type: "QWaylandSurface"; isReadonly: true; isPointer: true }
        Property { name: "shell"; type: "QWaylandWlShell"; isReadonly: true; isPointer: true }
        Property { name: "title"; type: "string"; isReadonly: true }
        Property { name: "className"; type: "string"; isReadonly: true }
        Signal { name: "pong" }
        Signal {
            name: "startMove"
            Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true }
        }
        Signal {
            name: "startResize"
            Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true }
            Parameter { name: "edges"; type: "ResizeEdge" }
        }
        Signal { name: "setDefaultToplevel" }
        Signal {
            name: "setTransient"
            Parameter { name: "parentSurface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "relativeToParent"; type: "QPoint" }
            Parameter { name: "inactive"; type: "bool" }
        }
        Signal {
            name: "setFullScreen"
            Parameter { name: "method"; type: "FullScreenMethod" }
            Parameter { name: "framerate"; type: "uint" }
            Parameter { name: "output"; type: "QWaylandOutput"; isPointer: true }
        }
        Signal {
            name: "setPopup"
            Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true }
            Parameter { name: "parentSurface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "relativeToParent"; type: "QPoint" }
        }
        Signal {
            name: "setMaximized"
            Parameter { name: "output"; type: "QWaylandOutput"; isPointer: true }
        }
        Method { name: "ping" }
        Method {
            name: "initialize"
            Parameter { name: "shell"; type: "QWaylandWlShell"; isPointer: true }
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "resource"; type: "QWaylandResource" }
        }
        Method {
            name: "sizeForResize"
            type: "QSize"
            Parameter { name: "size"; type: "QSizeF" }
            Parameter { name: "delta"; type: "QPointF" }
            Parameter { name: "edges"; type: "ResizeEdge" }
        }
        Method {
            name: "sendConfigure"
            Parameter { name: "size"; type: "QSize" }
            Parameter { name: "edges"; type: "ResizeEdge" }
        }
        Method { name: "sendPopupDone" }
    }
    Component {
        name: "QWaylandXdgShellV5"
        prototype: "QWaylandShell"
        Signal {
            name: "xdgSurfaceRequested"
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "resource"; type: "QWaylandResource" }
        }
        Signal {
            name: "xdgSurfaceCreated"
            Parameter { name: "xdgSurface"; type: "QWaylandXdgSurfaceV5"; isPointer: true }
        }
        Signal {
            name: "xdgPopupCreated"
            Parameter { name: "xdgPopup"; type: "QWaylandXdgPopupV5"; isPointer: true }
        }
        Signal {
            name: "xdgPopupRequested"
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "parent"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true }
            Parameter { name: "position"; type: "QPoint" }
            Parameter { name: "resource"; type: "QWaylandResource" }
        }
        Signal {
            name: "pong"
            Parameter { name: "serial"; type: "uint" }
        }
        Method {
            name: "ping"
            type: "uint"
            Parameter { name: "client"; type: "QWaylandClient"; isPointer: true }
        }
        Method { name: "closeAllPopups" }
    }
    Component {
        name: "QWaylandXdgShellV5QuickExtension"
        defaultProperty: "data"
        prototype: "QWaylandXdgShellV5"
        exports: ["QtWayland.Compositor/XdgShellV5 1.0"]
        exportMetaObjectRevisions: [0]
        Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
    }
    Component {
        name: "QWaylandXdgSurfaceV5"
        prototype: "QWaylandShellSurface"
        exports: ["QtWayland.Compositor/XdgSurfaceV5 1.0"]
        exportMetaObjectRevisions: [0]
        Enum {
            name: "State"
            values: {
                "MaximizedState": 1,
                "FullscreenState": 2,
                "ResizingState": 3,
                "ActivatedState": 4
            }
        }
        Enum {
            name: "ResizeEdge"
            values: {
                "NoneEdge": 0,
                "TopEdge": 1,
                "BottomEdge": 2,
                "LeftEdge": 4,
                "TopLeftEdge": 5,
                "BottomLeftEdge": 6,
                "RightEdge": 8,
                "TopRightEdge": 9,
                "BottomRightEdge": 10
            }
        }
        Property { name: "shell"; type: "QWaylandXdgShellV5"; isReadonly: true; isPointer: true }
        Property { name: "surface"; type: "QWaylandSurface"; isReadonly: true; isPointer: true }
        Property {
            name: "parentSurface"
            type: "QWaylandXdgSurfaceV5"
            isReadonly: true
            isPointer: true
        }
        Property { name: "title"; type: "string"; isReadonly: true }
        Property { name: "appId"; type: "string"; isReadonly: true }
        Property { name: "windowGeometry"; type: "QRect"; isReadonly: true }
        Property { name: "states"; type: "QList<int>"; isReadonly: true }
        Property { name: "maximized"; type: "bool"; isReadonly: true }
        Property { name: "fullscreen"; type: "bool"; isReadonly: true }
        Property { name: "resizing"; type: "bool"; isReadonly: true }
        Property { name: "activated"; type: "bool"; isReadonly: true }
        Signal {
            name: "showWindowMenu"
            Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true }
            Parameter { name: "localSurfacePosition"; type: "QPoint" }
        }
        Signal {
            name: "startMove"
            Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true }
        }
        Signal {
            name: "startResize"
            Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true }
            Parameter { name: "edges"; type: "ResizeEdge" }
        }
        Signal { name: "setTopLevel" }
        Signal { name: "setTransient" }
        Signal { name: "setMaximized" }
        Signal { name: "unsetMaximized" }
        Signal {
            name: "setFullscreen"
            Parameter { name: "output"; type: "QWaylandOutput"; isPointer: true }
        }
        Signal { name: "unsetFullscreen" }
        Signal { name: "setMinimized" }
        Signal {
            name: "ackConfigure"
            Parameter { name: "serial"; type: "uint" }
        }
        Method {
            name: "initialize"
            Parameter { name: "xdgShell"; type: "QWaylandXdgShellV5"; isPointer: true }
            Parameter { name: "surface"; type: "QWaylandSurface"; isPointer: true }
            Parameter { name: "resource"; type: "QWaylandResource" }
        }
        Method {
            name: "sizeForResize"
            type: "QSize"
            Parameter { name: "size"; type: "QSizeF" }
            Parameter { name: "delta"; type: "QPointF" }
            Parameter { name: "edge"; type: "ResizeEdge" }
        }
        Method {
            name: "sendConfigure"
            type: "uint"
            Parameter { name: "size"; type: "QSize" }
            Parameter { name: "states"; type: "QVector<uint>" }
        }
        Method {
            name: "sendConfigure"
            type: "uint"
            Parameter { name: "size"; type: "QSize" }
            Parameter { name: "states"; type: "QVector<State>" }
        }
        Method { name: "sendClose" }
        Method {
            name: "sendMaximized"
            type: "uint"
            Parameter { name: "size"; type: "QSize" }
        }
        Method {
            name: "sendUnmaximized"
            type: "uint"
            Parameter { name: "size"; type: "QSize" }
        }
        Method { name: "sendUnmaximized"; type: "uint" }
        Method {
            name: "sendFullscreen"
            type: "uint"
            Parameter { name: "size"; type: "QSize" }
        }
        Method {
            name: "sendResizing"
            type: "uint"
            Parameter { name: "maxSize"; type: "QSize" }
        }
    }
    Component {
        prototype: "QQuickItem"
        name: "QtWayland.Compositor/WaylandCursorItem 1.0"
        exports: ["QtWayland.Compositor/WaylandCursorItem 1.0"]
        exportMetaObjectRevisions: [0]
        isComposite: true
        defaultProperty: "data"
        Property { name: "seat"; type: "QObject"; isPointer: true }
        Property { name: "hotspotX"; type: "int" }
        Property { name: "hotspotY"; type: "int" }
        Method {
            name: "setCursorSurface"
            type: "QVariant"
            Parameter { name: "surface"; type: "QVariant" }
            Parameter { name: "hotspotX"; type: "QVariant" }
            Parameter { name: "hotspotY"; type: "QVariant" }
        }
        Property { name: "compositor"; type: "QWaylandCompositor"; isReadonly: true; isPointer: true }
        Property { name: "surface"; type: "QWaylandSurface"; isPointer: true }
        Property { name: "paintEnabled"; type: "bool" }
        Property { name: "touchEventsEnabled"; type: "bool" }
        Property { name: "origin"; type: "QWaylandSurface::Origin"; isReadonly: true }
        Property { name: "inputEventsEnabled"; type: "bool" }
        Property { name: "focusOnClick"; type: "bool" }
        Property { name: "sizeFollowsSurface"; type: "bool" }
        Property { name: "subsurfaceHandler"; type: "QObject"; isPointer: true }
        Property { name: "output"; type: "QWaylandOutput"; isPointer: true }
        Property { name: "bufferLocked"; type: "bool" }
        Property { name: "allowDiscardFrontBuffer"; type: "bool" }
        Signal { name: "surfaceDestroyed" }
        Signal {
            name: "mouseMove"
            Parameter { name: "windowPosition"; type: "QPointF" }
        }
        Signal { name: "mouseRelease" }
        Method {
            name: "takeFocus"
            Parameter { name: "device"; type: "QWaylandSeat"; isPointer: true }
        }
        Method { name: "takeFocus" }
        Method {
            name: "setPaintEnabled"
            Parameter { name: "paintEnabled"; type: "bool" }
        }
        Method { name: "raise" }
        Method { name: "lower" }
        Method {
            name: "mapToSurface"
            type: "QPointF"
            Parameter { name: "point"; type: "QPointF" }
        }
        Method {
            name: "inputMethodQuery"
            type: "QVariant"
            Parameter { name: "query"; type: "Qt::InputMethodQuery" }
            Parameter { name: "argument"; type: "QVariant" }
        }
    }
    Component {
        prototype: "QQuickWindowQmlImpl"
        name: "QtWayland.Compositor/WaylandOutputWindow 1.0"
        exports: ["QtWayland.Compositor/WaylandOutputWindow 1.0"]
        exportMetaObjectRevisions: [0]
        isComposite: true
        defaultProperty: "data"
        Property { name: "compositor"; type: "QObject"; isPointer: true }
        Property { name: "output"; type: "QObject"; isPointer: true }
        Property { name: "automaticFrameCallback"; type: "bool" }
    }
}
