diff options
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbnativeinterface.cpp')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbnativeinterface.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp index 6241898462..da60cfd2bd 100644 --- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp +++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp @@ -42,6 +42,7 @@ #include "qxcbnativeinterface.h" #include "qxcbscreen.h" +#include "qxcbintegration.h" #include <private/qguiapplication_p.h> #include <QtCore/QMap> @@ -77,6 +78,8 @@ public: insert("glxcontext",QXcbNativeInterface::GLXContext); insert("apptime",QXcbNativeInterface::AppTime); insert("appusertime",QXcbNativeInterface::AppUserTime); + insert("hintstyle", QXcbNativeInterface::ScreenHintStyle); + insert("startupid", QXcbNativeInterface::StartupId); } }; @@ -98,6 +101,25 @@ void QXcbNativeInterface::beep() // For QApplication::beep() #endif } +void *QXcbNativeInterface::nativeResourceForIntegration(const QByteArray &resourceString) +{ + QByteArray lowerCaseResource = resourceString.toLower(); + if (!qXcbResourceMap()->contains(lowerCaseResource)) + return 0; + + ResourceType resource = qXcbResourceMap()->value(lowerCaseResource); + void *result = 0; + switch (resource) { + case StartupId: + result = startupId(); + break; + default: + break; + } + + return result; +} + void *QXcbNativeInterface::nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context) { QByteArray lowerCaseResource = resourceString.toLower(); @@ -139,6 +161,8 @@ void *QXcbNativeInterface::nativeResourceForScreen(const QByteArray &resource, Q case AppUserTime: result = appUserTime(xcbScreen); break; + case ScreenHintStyle: + result = reinterpret_cast<void *>(xcbScreen->hintStyle() + 1); default: break; } @@ -193,6 +217,15 @@ void *QXcbNativeInterface::appUserTime(const QXcbScreen *screen) return reinterpret_cast<void *>(quintptr(screen->connection()->netWmUserTime())); } +void *QXcbNativeInterface::startupId() +{ + QXcbIntegration* integration = static_cast<QXcbIntegration *>(QGuiApplicationPrivate::platformIntegration()); + QXcbConnection *defaultConnection = integration->defaultConnection(); + if (defaultConnection) + return reinterpret_cast<void *>(const_cast<char *>(defaultConnection->startupId().constData())); + return 0; +} + void QXcbNativeInterface::setAppTime(QScreen* screen, xcb_timestamp_t time) { static_cast<QXcbScreen *>(screen->handle())->connection()->setTime(time); |