From bfe8a354cdd82ded6e38e8c38849e1ecc1b2f90c Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 7 Feb 2014 17:20:14 -0500 Subject: [PATCH] wayland: Add support for set_shadow_width --- gdk/wayland/gdkwindow-wayland.c | 19 ++++++++++++++++++- gdk/wayland/protocol/xdg-shell.xml | 26 ++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c index 6d80527c34..ab5953f320 100644 --- a/gdk/wayland/gdkwindow-wayland.c +++ b/gdk/wayland/gdkwindow-wayland.c @@ -2148,6 +2148,23 @@ gdk_wayland_window_set_opaque_region (GdkWindow *window, wl_region_destroy (wl_region); } +static void +gdk_wayland_window_set_shadow_width (GdkWindow *window, + int left, + int right, + int top, + int bottom) +{ + GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); + + if (GDK_WINDOW_DESTROYED (window)) + return; + + if (!impl->xdg_surface) + return; + + xdg_surface_set_margin (impl->xdg_surface, left, right, top, bottom); +} static void _gdk_window_impl_wayland_class_init (GdkWindowImplWaylandClass *klass) @@ -2238,9 +2255,9 @@ _gdk_window_impl_wayland_class_init (GdkWindowImplWaylandClass *klass) impl_class->delete_property = gdk_wayland_window_delete_property; impl_class->get_scale_factor = gdk_wayland_window_get_scale_factor; impl_class->set_opaque_region = gdk_wayland_window_set_opaque_region; + impl_class->set_shadow_width = gdk_wayland_window_set_shadow_width; } - void _gdk_wayland_window_set_device_grabbed (GdkWindow *window, GdkDevice *device, diff --git a/gdk/wayland/protocol/xdg-shell.xml b/gdk/wayland/protocol/xdg-shell.xml index 5c21f4ebc9..f0d04aa34a 100644 --- a/gdk/wayland/protocol/xdg-shell.xml +++ b/gdk/wayland/protocol/xdg-shell.xml @@ -124,6 +124,32 @@ + + + This tells the compositor what the visible size of the window + should be, so it can use it to determine what borders to use for + constrainment and alignment. + + CSD often has invisible areas for decoration purposes, like drop + shadows. These "shadow" drawings need to be subtracted out of the + normal boundaries of the window when computing where to place + windows (e.g. to set this window so it's centered on top of another, + or to put it to the left or right of the screen.) + + This value should change as little as possible at runtime, to + prevent flicker. + + This value is also ignored when the window is maximized or + fullscreen, and assumed to be 0. + + If never called, this value is assumed to be 0. + + + + + + + Set a short title for the surface.