diff options
Diffstat (limited to 'src/compositor')
-rw-r--r-- | src/compositor/compositor_api/waylandsurface.cpp | 6 | ||||
-rw-r--r-- | src/compositor/compositor_api/waylandsurface.h | 4 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/wlshellsurface.cpp | 4 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/wlsurface.cpp | 8 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/wlsurface.h | 4 |
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; |