return func(window);
return UINT_MAX;
}
+
+ typedef void (*SetDeviceOrientationType)(Qt::ScreenOrientation orientation);
+ static const QByteArray setDeviceOrientationTypeIdentifier() { return QByteArrayLiteral("XcbSetDeviceOrientationType"); }
+
+ static void setDeviceOrientation(Qt::ScreenOrientation orientation)
+ {
+ SetDeviceOrientationType func = reinterpret_cast<SetDeviceOrientationType>(QGuiApplication::platformFunction(setDeviceOrientationTypeIdentifier()));
+ if (func)
+ func(orientation);
+ }
};
if (!window)
return;
+#ifdef Q_OS_LINUX_TIZEN
+ if (event->type == atom(QXcbAtom::_X_ILLUME_DEACTIVATE_WINDOW)) {
+ QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationSuspended);
+ return;
+ } if (event->type == atom(QXcbAtom::_X_ILLUME_ACTIVATE_WINDOW)) {
+ QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationActive);
+ return;
+ } else if (event->type == atom(QXcbAtom::_E_COMP_FLUSH)
+ || event->type == atom(QXcbAtom::_NET_CM_WINDOW_EFFECT_CLIENT_STATE)) {
+ //silence the Tizen Mobile X11 WM messages for now
+ return;
+ }
+#endif // Q_OS_LINUX_TIZEN
+
window->handleClientMessageEvent(event);
}
"Rel Vert Wheel\0"
"Rel Horiz Scroll\0"
"Rel Vert Scroll\0"
+#ifdef Q_OS_LINUX_TIZEN
+ "_E_COMP_FLUSH\0"
+ "_NET_CM_WINDOW_EFFECT_CLIENT_STATE\0"
+ "_X_ILLUME_ACTIVATE_WINDOW\0"
+ "_X_ILLUME_DEACTIVATE_WINDOW\0"
+#endif
"_XSETTINGS_SETTINGS\0"
"_COMPIZ_DECOR_PENDING\0"
"_COMPIZ_DECOR_REQUEST\0"
RelHorizScroll,
RelVertScroll,
+#ifdef Q_OS_LINUX_TIZEN
+ _E_COMP_FLUSH,
+ _NET_CM_WINDOW_EFFECT_CLIENT_STATE,
+ _X_ILLUME_ACTIVATE_WINDOW,
+ _X_ILLUME_DEACTIVATE_WINDOW,
+#endif
_XSETTINGS_SETTINGS,
_COMPIZ_DECOR_PENDING,
case ForeignWindows: return true;
case SyncState: return true;
case RasterGLSurface: return true;
+#ifdef Q_OS_LINUX_TIZEN
+ case ApplicationState: return true;
+#endif
default: return QPlatformIntegration::hasCapability(cap);
}
}
return func;
}
+static void _setDeviceOrientation(Qt::ScreenOrientation orientation) {
+ //QMetaObject::invokeMethod method is used here because it is possible
+ //and very probable that this function will be invoked from non-Gui thread.
+ //This way thread safety is guqranteed in easy way
+ QMetaObject::invokeMethod(QGuiApplication::platformNativeInterface(),
+ "setDeviceOrientation",
+ Q_ARG(int, orientation));
+}
+
+void QXcbNativeInterface::setDeviceOrientation(int orientation) {
+ //This slot is private and supposed to be invoked only by _setDeviceOrientation function
+ Qt::ScreenOrientation screenOrientation = (Qt::ScreenOrientation) orientation;
+ QScreen *screen = QGuiApplication::primaryScreen();
+ if (screen)
+ QWindowSystemInterface::handleScreenOrientationChange(screen, screenOrientation);
+ else
+ qWarning() << "Can't set device orientation to:" << qPrintable(screenOrientation)
+ << "because there is no primary screen";
+}
+
QFunctionPointer QXcbNativeInterface::platformFunction(const QByteArray &function) const
{
const QByteArray lowerCaseFunction = function.toLower();
return func;
//case sensitive
+ if (function == QXcbFunctions::setDeviceOrientationTypeIdentifier())
+ //Pointer to static function is returned because - see comment in that function
+ return QFunctionPointer(_setDeviceOrientation);
+
if (function == QXcbWindowFunctions::setWmWindowTypeIdentifier())
return QFunctionPointer(QXcbWindowFunctions::SetWmWindowType(QXcbWindow::setWmWindowTypeStatic));
private:
xcb_window_t locateSystemTray(xcb_connection_t *conn, const QXcbScreen *screen);
+ Q_INVOKABLE void setDeviceOrientation(int orientation);
const QByteArray m_genericEventFilterType;