[gtk/gtk-3-24: 4/6] wayland: Respond to server_decoration.mode events
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gtk-3-24: 4/6] wayland: Respond to server_decoration.mode events
- Date: Tue, 3 Jul 2018 10:16:59 +0000 (UTC)
commit f62c92783a604f453228e1fd6287910514401126
Author: David Edmundson <kde davidedmundson co uk>
Date: Thu Jun 28 18:09:47 2018 +0100
wayland: Respond to server_decoration.mode events
gdk/wayland/gdkwindow-wayland.c | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index 9ae45231ae..0e2b66e6e8 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -259,6 +259,7 @@ static void calculate_moved_to_rect_result (GdkWindow *window,
static gboolean gdk_wayland_window_is_exported (GdkWindow *window);
static void gdk_wayland_window_unexport (GdkWindow *window);
+static void gdk_wayland_window_announce_decoration_mode (GdkWindow *window);
GType _gdk_window_impl_wayland_get_type (void);
@@ -2068,6 +2069,21 @@ window_anchor_to_gravity_legacy (GdkGravity rect_anchor)
}
}
+static void
+kwin_server_decoration_mode_set (void *data, struct org_kde_kwin_server_decoration
*org_kde_kwin_server_decoration, uint32_t mode)
+{
+ GdkWindow *window = GDK_WINDOW (data);
+ GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
+
+ if ((mode == ORG_KDE_KWIN_SERVER_DECORATION_MODE_SERVER && impl->using_csd) ||
+ (mode == ORG_KDE_KWIN_SERVER_DECORATION_MODE_CLIENT && !impl->using_csd))
+ gdk_wayland_window_announce_decoration_mode (window);
+}
+
+static const struct org_kde_kwin_server_decoration_listener kwin_server_decoration_listener = {
+ kwin_server_decoration_mode_set
+};
+
static void
gdk_wayland_window_announce_decoration_mode (GdkWindow *window)
{
@@ -2077,9 +2093,15 @@ gdk_wayland_window_announce_decoration_mode (GdkWindow *window)
if (!display_wayland->server_decoration_manager)
return;
if (!impl->display_server.server_decoration)
- impl->display_server.server_decoration =
- org_kde_kwin_server_decoration_manager_create (display_wayland->server_decoration_manager,
-
impl->display_server.wl_surface);
+ {
+ impl->display_server.server_decoration =
+ org_kde_kwin_server_decoration_manager_create (display_wayland->server_decoration_manager,
+
impl->display_server.wl_surface);
+ org_kde_kwin_server_decoration_add_listener (impl->display_server.server_decoration,
+
&kwin_server_decoration_listener,
+ window);
+ }
+
if (impl->display_server.server_decoration)
{
if (impl->using_csd)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]