diff options
Diffstat (limited to 'src/platformheaders/xcbfunctions')
4 files changed, 217 insertions, 10 deletions
diff --git a/src/platformheaders/xcbfunctions/qxcbintegrationfunctions.h b/src/platformheaders/xcbfunctions/qxcbintegrationfunctions.h new file mode 100644 index 0000000000..66bfb72307 --- /dev/null +++ b/src/platformheaders/xcbfunctions/qxcbintegrationfunctions.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QXCBINTEGRATIONFUNCTIONS_H +#define QXCBINTEGRATIONFUNCTIONS_H + +#include <QtPlatformHeaders/QPlatformHeaderHelper> + +QT_BEGIN_NAMESPACE + +class QXcbIntegrationFunctions +{ +public: + typedef bool (*XEmbedSystemTrayVisualHasAlphaChannel)(); + static const QByteArray xEmbedSystemTrayVisualHasAlphaChannelIdentifier() { return QByteArrayLiteral("XcbXEmbedSystemTrayVisualHasAlphaChannel"); } + static bool xEmbedSystemTrayVisualHasAlphaChannel() + { + return QPlatformHeaderHelper::callPlatformFunction<bool, XEmbedSystemTrayVisualHasAlphaChannel>(xEmbedSystemTrayVisualHasAlphaChannelIdentifier()); + } +}; + +QT_END_NAMESPACE + +#endif /*QXCBINTEGRATIONFUNCTIONS_H*/ diff --git a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h index ae05cf52a9..0db2e2a09d 100644 --- a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h +++ b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h @@ -34,8 +34,7 @@ #ifndef QXCBWINDOWFUNCTIONS_H #define QXCBWINDOWFUNCTIONS_H -#include <QtCore/QByteArray> -#include <QtGui/QGuiApplication> +#include <QtPlatformHeaders/QPlatformHeaderHelper> QT_BEGIN_NAMESPACE @@ -65,12 +64,37 @@ public: typedef void (*SetWmWindowType)(QWindow *window, QXcbWindowFunctions::WmWindowTypes windowType); static const QByteArray setWmWindowTypeIdentifier() { return QByteArrayLiteral("XcbSetWmWindowType"); } - static void setWmWindowType(QWindow *window, WmWindowType type) { - SetWmWindowType func = reinterpret_cast<SetWmWindowType>(QGuiApplication::platformFunction(setWmWindowTypeIdentifier())); - if (func) - func(window, type); + return QPlatformHeaderHelper::callPlatformFunction<void, SetWmWindowType, QWindow *, WmWindowType>(setWmWindowTypeIdentifier(), window, type); + } + + typedef void (*SetWmWindowIconText)(QWindow *window, const QString &text); + static const QByteArray setWmWindowIconTextIdentifier() { return QByteArrayLiteral("XcbSetWmWindowIconText"); } + static void setWmWindowIconText(QWindow *window, const QString &text) + { + return QPlatformHeaderHelper::callPlatformFunction<void, SetWmWindowIconText, QWindow *, const QString &>(setWmWindowIconTextIdentifier(), window, text); + } + + typedef void (*SetParentRelativeBackPixmap)(const QWindow *window); + static const QByteArray setParentRelativeBackPixmapIdentifier() { return QByteArrayLiteral("XcbSetParentRelativeBackPixmap"); } + static void setParentRelativeBackPixmap(const QWindow *window) + { + return QPlatformHeaderHelper::callPlatformFunction<void, SetParentRelativeBackPixmap, const QWindow *>(setParentRelativeBackPixmapIdentifier(), window); + } + + typedef bool (*RequestSystemTrayWindowDock)(const QWindow *window); + static const QByteArray requestSystemTrayWindowDockIdentifier() { return QByteArrayLiteral("XcbRequestSystemTrayWindowDockIdentifier"); } + static bool requestSystemTrayWindowDock(const QWindow *window) + { + return QPlatformHeaderHelper::callPlatformFunction<bool, RequestSystemTrayWindowDock, const QWindow *>(requestSystemTrayWindowDockIdentifier(), window); + } + + typedef QRect (*SystemTrayWindowGlobalGeometry)(const QWindow *window); + static const QByteArray systemTrayWindowGlobalGeometryIdentifier() { return QByteArrayLiteral("XcbSystemTrayWindowGlobalGeometryIdentifier"); } + static QRect systemTrayWindowGlobalGeometry(const QWindow *window) + { + return QPlatformHeaderHelper::callPlatformFunction<QRect, SystemTrayWindowGlobalGeometry, const QWindow *>(systemTrayWindowGlobalGeometryIdentifier(), window); } typedef uint (*VisualId)(QWindow *window); diff --git a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc index 414d0795fc..a02f93968d 100644 --- a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc +++ b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc @@ -65,7 +65,9 @@ /*! \typedef QXcbWindowFunctions::SetWmWindowType - This is the typedef for the function returned by QGuiApplication::platformFunction when passed setWmWindowTypeIdentifier. + This is the typedef for the function returned by + QGuiApplication::platformFunction when passed the + value returned by setWmWindowTypeIdentifier(). */ /*! @@ -78,6 +80,131 @@ /*! \fn void QXcbWindowFunctions::setWmWindowType(QWindow *window, WmWindowType type) - This is a convenience function that can be used directly instead of resolving the function pointer. - \a window and \a type will be relayed to the function retrieved by QGuiApplication + This is a convenience function that can be used directly instead + of resolving the function pointer. \a window and \a type will be + relayed to the function retrieved by QGuiApplication. +*/ + +/*! + \typedef QXcbWindowFunctions::SetWmWindowIconText + + This is the typedef for the function returned by + QGuiApplication::platformFunction when passed the + value returned by setWmWindowIconTextIdentifier(). +*/ + +/*! + \fn const QByteArray QXcbWindowFunctions::setWmWindowIconTextIdentifier() + + This function returns the byte array that can be used to query + QGuiApplication::platformFunction to retrieve the SetWmWindowIconText function. +*/ + +/*! + \fn void QXcbWindowFunctions::setWmWindowIconText(QWindow *window, const QString& text) + + This is a convenience function that can be used directly instead + of resolving the function pointer. \a window and \a text will be + relayed to the function retrieved by QGuiApplication. +*/ + +/*! + \typedef QXcbWindowFunctions::SetParentRelativeBackPixmap + + This is the typedef for the function returned by + QGuiApplication::platformFunction when passed the + value returned by setParentRelativeBackPixmapIdentifier(). +*/ + +/*! + \fn const QByteArray QXcbWindowFunctions::setParentRelativeBackPixmapIdentifier() + + This function returns the byte array that can be used to query + QGuiApplication::platformFunction to retrieve the SetParentRelativeBackPixmap function. +*/ + +/*! + \fn void QXcbWindowFunctions::setParentRelativeBackPixmap(const QWindow *window) + + This is a convenience function that can be used directly instead + of resolving the function pointer. \a window will be + relayed to the function retrieved by QGuiApplication. +*/ + +/*! + \typedef QXcbWindowFunctions::RequestSystemTrayWindowDock + + This is the typedef for the function returned by + QGuiApplication::platformFunction when passed the + value returned by requestSystemTrayWindowDockIdentifier(). +*/ + +/*! + \fn const QByteArray QXcbWindowFunctions::requestSystemTrayWindowDockIdentifier() + + This function returns the byte array that can be used to query + QGuiApplication::platformFunction to retrieve the RequestSystemTrayWindowDock function. +*/ + +/*! + \fn bool QXcbWindowFunctions::requestSystemTrayWindowDock(const QWindow *window) + + This is a convenience function that can be used directly instead + of resolving the function pointer. \a window will be + relayed to the function retrieved by QGuiApplication. + + Returns the boolean result of calling the function or false if the + function was not found. +*/ + +/*! + \typedef QXcbWindowFunctions::SystemTrayWindowGlobalGeometry + + This is the typedef for the function returned by + QGuiApplication::platformFunction when passed the + value returned by systemTrayWindowGlobalGeometryIdentifier(). +*/ + +/*! + \fn const QByteArray QXcbWindowFunctions::systemTrayWindowGlobalGeometryIdentifier() + + This function returns the byte array that can be used to query + QGuiApplication::platformFunction to retrieve the SystemTrayWindowGlobalGeometry function. +*/ + +/*! + \fn QRect QXcbWindowFunctions::systemTrayWindowGlobalGeometry(const QWindow *window) + + This is a convenience function that can be used directly instead + of resolving the function pointer. \a window will be + relayed to the function retrieved by QGuiApplication. + + Returns the QRect result of calling the function or an empty + QRect if the function was not found. +*/ + +/*! + \typedef QXcbWindowFunctions::VisualId + + This is the typedef for the function returned by + QGuiApplication::platformFunction when passed the + value returned by visualIdIdentifier(). +*/ + +/*! + \fn const QByteArray QXcbWindowFunctions::visualIdIdentifier() + + This function returns the byte array that can be used to query + QGuiApplication::platformFunction to retrieve the VisualId function. +*/ + +/*! + \fn uint QXcbWindowFunctions::visualId(QWindow *window) + + This is a convenience function that can be used directly instead + of resolving the function pointer. \a window will be + relayed to the function retrieved by QGuiApplication. + + Returns the unsigned integer result of calling the function or + UINT_MAX if the function was not found. */ diff --git a/src/platformheaders/xcbfunctions/xcbfunctions.pri b/src/platformheaders/xcbfunctions/xcbfunctions.pri index 8844913cd1..7f611d80bd 100644 --- a/src/platformheaders/xcbfunctions/xcbfunctions.pri +++ b/src/platformheaders/xcbfunctions/xcbfunctions.pri @@ -1 +1,3 @@ -HEADERS += $$PWD/qxcbwindowfunctions.h +HEADERS += \ + $$PWD/qxcbwindowfunctions.h \ + $$PWD/qxcbintegrationfunctions.h |