summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
diff options
context:
space:
mode:
authorLasse Holmstedt <lasse.holmstedt@nokia.com>2011-08-31 09:55:11 +0200
committerQt by Nokia <qt-info@nokia.com>2011-09-05 11:11:04 +0200
commit151a17761334038181e3f3b36846757560deadf6 (patch)
treedb7f450b198f79bd0557665423a83678a1d5f520 /src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
parentbafeda59c7707f67e5bbf13f3a4772e21faeb09a (diff)
Generic property support for platform windows
QPlatformNativeInterface can now contain generic window properties in a QVariantMap, to facilitate communication with the compositor and clients for certain platforms. When window properties change, a signal is emitted from the respective QPlatformNativeInterface instance. The properties are intended to be read/writable from both client and server. Change-Id: I7b42f7910d03c0d309add6c7dbb1c9b66ad22a3f Reviewed-on: http://codereview.qt.nokia.com/3956 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/plugins/platforms/wayland/qwaylandnativeinterface.cpp')
-rw-r--r--src/plugins/platforms/wayland/qwaylandnativeinterface.cpp34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp b/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
index 43be74a6e..17736968c 100644
--- a/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
+++ b/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
@@ -40,10 +40,13 @@
****************************************************************************/
#include "qwaylandnativeinterface.h"
-
#include "qwaylanddisplay.h"
#include "qwaylandwindow.h"
+
+#include "windowmanager_integration/qwaylandwindowmanagerintegration.h"
+
#include <QtGui/private/qapplication_p.h>
+#include <QDebug>
void *QWaylandNativeInterface::nativeResourceForWidget(const QByteArray &resourceString, QWidget *widget)
{
@@ -70,3 +73,32 @@ QWaylandScreen * QWaylandNativeInterface::qPlatformScreenForWidget(QWidget *widg
}
return screen;
}
+
+QVariantMap QWaylandNativeInterface::windowProperties(QPlatformWindow *window) const
+{
+ return m_windowProperties.value(window);
+}
+
+QVariant QWaylandNativeInterface::windowProperty(QPlatformWindow *window, const QString &name) const
+{
+ const QVariantMap properties = m_windowProperties.value(window);
+ return properties.value(name);
+}
+
+QVariant QWaylandNativeInterface::windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const
+{
+ const QVariantMap properties = m_windowProperties.value(window);
+ return properties.value(name, defaultValue);
+}
+
+void QWaylandNativeInterface::setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value)
+{
+ QVariantMap props = m_windowProperties.value(window);
+ props.insert(name, value);
+ m_windowProperties.insert(window, props);
+
+ QWaylandWindow *wlWindow = static_cast<QWaylandWindow*>(window);
+ QWaylandWindowManagerIntegration::instance()->setWindowProperty(wlWindow, name, value);
+
+ emit windowPropertyChanged(window, name);
+}