summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorPier Luigi Fiorini <pierluigi.fiorini@gmail.com>2012-11-05 22:11:15 +0100
committerAndy Nichols <andy.nichols@digia.com>2013-01-04 14:26:23 +0100
commit819d3b1f159d34116fb27f00468371410322c1c8 (patch)
tree9dd364b254ba525fad65472372aa0bbe5eec2829 /src/plugins/platforms
parent4323bf663ea131897857ff564943b17e914ccd9b (diff)
Set surface class name.
The class name identifies the general class of applications to which the surface belongs. The class is the name of the desktop file and is derived from the process name. We might want to add a new method to QWindow in order to set a custom class name. It's quiet similar to WM_CLASS on X11, for more information see https://live.gnome.org/GnomeShell/ApplicationBased Change-Id: I5be90fb45e82e79710dda376f42c18c126d2a80f Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/wayland/qwaylandshellsurface.cpp5
-rw-r--r--src/plugins/platforms/wayland/qwaylandshellsurface.h2
-rw-r--r--src/plugins/platforms/wayland/qwaylandwindow.cpp6
3 files changed, 13 insertions, 0 deletions
diff --git a/src/plugins/platforms/wayland/qwaylandshellsurface.cpp b/src/plugins/platforms/wayland/qwaylandshellsurface.cpp
index 60176ef88..de0101f9b 100644
--- a/src/plugins/platforms/wayland/qwaylandshellsurface.cpp
+++ b/src/plugins/platforms/wayland/qwaylandshellsurface.cpp
@@ -107,6 +107,11 @@ void QWaylandShellSurface::updateTransientParent(QWindow *parent)
flags);
}
+void QWaylandShellSurface::setClassName(const char *_class)
+{
+ wl_shell_surface_set_class(m_shell_surface, _class);
+}
+
void QWaylandShellSurface::setTitle(const char *title)
{
wl_shell_surface_set_title(m_shell_surface, title);
diff --git a/src/plugins/platforms/wayland/qwaylandshellsurface.h b/src/plugins/platforms/wayland/qwaylandshellsurface.h
index 4772e69be..d18bda36d 100644
--- a/src/plugins/platforms/wayland/qwaylandshellsurface.h
+++ b/src/plugins/platforms/wayland/qwaylandshellsurface.h
@@ -64,6 +64,8 @@ public:
struct wl_shell_surface *handle() const { return m_shell_surface; }
+ void setClassName(const char *_class);
+
void setTitle(const char *title);
private:
diff --git a/src/plugins/platforms/wayland/qwaylandwindow.cpp b/src/plugins/platforms/wayland/qwaylandwindow.cpp
index 8bb135675..1e48bfdea 100644
--- a/src/plugins/platforms/wayland/qwaylandwindow.cpp
+++ b/src/plugins/platforms/wayland/qwaylandwindow.cpp
@@ -51,6 +51,7 @@
#include "qwaylandsubsurface.h"
#include "qwaylanddecoration.h"
+#include <QtCore/QFileInfo>
#include <QtGui/QWindow>
#ifdef QT_WAYLAND_WINDOWMANAGER_SUPPORT
@@ -92,6 +93,11 @@ QWaylandWindow::QWaylandWindow(QWindow *window)
mDisplay->windowManagerIntegration()->authenticateWithToken();
#endif
+ // Set surface class to the .desktop file name (obtained from executable name)
+ QFileInfo exeFileInfo(qApp->applicationFilePath());
+ QString className = exeFileInfo.baseName() + QLatin1String(".desktop");
+ mShellSurface->setClassName(className.toUtf8().constData());
+
if (parent() && mSubSurfaceWindow) {
mSubSurfaceWindow->setParent(static_cast<const QWaylandWindow *>(parent()));
} else if (window->transientParent()) {