summaryrefslogtreecommitdiffstats
path: root/src/compositor
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor')
-rw-r--r--src/compositor/compositor_api/waylandsurface.cpp6
-rw-r--r--src/compositor/compositor_api/waylandsurface.h4
-rw-r--r--src/compositor/wayland_wrapper/wlshellsurface.cpp4
-rw-r--r--src/compositor/wayland_wrapper/wlsurface.cpp8
-rw-r--r--src/compositor/wayland_wrapper/wlsurface.h4
5 files changed, 24 insertions, 2 deletions
diff --git a/src/compositor/compositor_api/waylandsurface.cpp b/src/compositor/compositor_api/waylandsurface.cpp
index 33032e034..972ae451b 100644
--- a/src/compositor/compositor_api/waylandsurface.cpp
+++ b/src/compositor/compositor_api/waylandsurface.cpp
@@ -311,6 +311,12 @@ void WaylandSurface::sendOnScreenVisibilityChange(bool visible)
d->surface->extendedSurface()->sendOnScreenVisibility(visible);
}
+QString WaylandSurface::className() const
+{
+ Q_D(const WaylandSurface);
+ return d->surface->className();
+}
+
QString WaylandSurface::title() const
{
Q_D(const WaylandSurface);
diff --git a/src/compositor/compositor_api/waylandsurface.h b/src/compositor/compositor_api/waylandsurface.h
index 6cfe084a9..ff3eb47fa 100644
--- a/src/compositor/compositor_api/waylandsurface.h
+++ b/src/compositor/compositor_api/waylandsurface.h
@@ -74,6 +74,7 @@ class Q_COMPOSITOR_EXPORT WaylandSurface : public QObject
Q_PROPERTY(QPointF pos READ pos WRITE setPos NOTIFY posChanged)
Q_PROPERTY(WaylandSurface::WindowFlags windowFlags READ windowFlags NOTIFY windowFlagsChanged)
Q_PROPERTY(Qt::ScreenOrientation contentOrientation READ contentOrientation NOTIFY contentOrientationChanged)
+ Q_PROPERTY(QString className READ className NOTIFY classNameChanged)
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
Q_PROPERTY(Qt::ScreenOrientations orientationUpdateMask READ orientationUpdateMask NOTIFY orientationUpdateMaskChanged)
@@ -146,6 +147,8 @@ public:
WaylandCompositor *compositor() const;
+ QString className() const;
+
QString title() const;
bool transientInactive() const;
@@ -162,6 +165,7 @@ signals:
void contentOrientationChanged();
void orientationUpdateMaskChanged();
void extendedSurfaceReady();
+ void classNameChanged();
void titleChanged();
};
diff --git a/src/compositor/wayland_wrapper/wlshellsurface.cpp b/src/compositor/wayland_wrapper/wlshellsurface.cpp
index 8f837fc7a..aed1ee64f 100644
--- a/src/compositor/wayland_wrapper/wlshellsurface.cpp
+++ b/src/compositor/wayland_wrapper/wlshellsurface.cpp
@@ -284,8 +284,8 @@ void ShellSurface::set_class(struct wl_client *client,
const char *class_)
{
Q_UNUSED(client);
- Q_UNUSED(resource);
- Q_UNUSED(class_);
+ ShellSurface *self = static_cast<ShellSurface *>(resource->data);
+ self->surface()->setClassName(QString::fromUtf8(class_));
}
const struct wl_shell_surface_interface ShellSurface::shell_surface_interface = {
diff --git a/src/compositor/wayland_wrapper/wlsurface.cpp b/src/compositor/wayland_wrapper/wlsurface.cpp
index d05f36b52..d0586a90b 100644
--- a/src/compositor/wayland_wrapper/wlsurface.cpp
+++ b/src/compositor/wayland_wrapper/wlsurface.cpp
@@ -501,6 +501,14 @@ void Surface::surface_commit(wl_client *client, wl_resource *resource)
resolve<Surface>(resource)->commit();
}
+void Surface::setClassName(const QString &className)
+{
+ if (m_className != className) {
+ m_className = className;
+ emit waylandSurface()->classNameChanged();
+ }
+}
+
void Surface::setTitle(const QString &title)
{
if (m_title != title) {
diff --git a/src/compositor/wayland_wrapper/wlsurface.h b/src/compositor/wayland_wrapper/wlsurface.h
index 642e8f790..8ec87fa36 100644
--- a/src/compositor/wayland_wrapper/wlsurface.h
+++ b/src/compositor/wayland_wrapper/wlsurface.h
@@ -123,6 +123,9 @@ public:
static const struct wl_surface_interface surface_interface;
+ QString className() const { return m_className; }
+ void setClassName(const QString &className);
+
QString title() const { return m_title; }
void setTitle(const QString &title);
@@ -157,6 +160,7 @@ private:
QPointF m_position;
QSize m_size;
+ QString m_className;
QString m_title;
bool m_transientInactive;