2023-01-10 16:43:52 +01:00
|
|
|
From 8dec751a6d84335fb04288b8efab6dd5c90288d3 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Isaac Freund <ifreund@ifreund.xyz>
|
|
|
|
Date: Fri, 9 Oct 2020 15:28:07 +0200
|
|
|
|
Subject: [PATCH] layer-shell: error on 0 dimension without anchors
|
|
|
|
|
|
|
|
The protocol requires clients to set opposing anchors when requesting
|
|
|
|
a width or height of 0.
|
|
|
|
|
|
|
|
The goal of this patch is not to break clients that rely on this
|
|
|
|
behavior but to improve the consistency of the layer shell ecosystem
|
|
|
|
through adherence to the protocol.
|
|
|
|
---
|
|
|
|
types/wlr_layer_shell_v1.c | 20 ++++++++++++++++++++
|
|
|
|
1 file changed, 20 insertions(+)
|
|
|
|
|
2023-01-10 16:33:37 +01:00
|
|
|
diff --git a/types/wlr_layer_shell_v1.c b/types/wlr_layer_shell_v1.c
|
2023-01-10 16:43:52 +01:00
|
|
|
index d83b22b86..bc6811179 100644
|
2023-01-10 16:33:37 +01:00
|
|
|
--- a/types/wlr_layer_shell_v1.c
|
|
|
|
+++ b/types/wlr_layer_shell_v1.c
|
|
|
|
@@ -307,6 +307,26 @@ static void layer_surface_role_commit(struct wlr_surface *wlr_surface) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
+ const uint32_t horiz = ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT |
|
|
|
|
+ ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT;
|
|
|
|
+ if (surface->client_pending.desired_width == 0 &&
|
|
|
|
+ (surface->client_pending.anchor & horiz) != horiz) {
|
|
|
|
+ wl_resource_post_error(surface->resource,
|
|
|
|
+ ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SIZE,
|
|
|
|
+ "width 0 requested without setting left and right anchors");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const uint32_t vert = ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
|
|
|
|
+ ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM;
|
|
|
|
+ if (surface->client_pending.desired_height == 0 &&
|
|
|
|
+ (surface->client_pending.anchor & vert) != vert) {
|
|
|
|
+ wl_resource_post_error(surface->resource,
|
|
|
|
+ ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SIZE,
|
|
|
|
+ "height 0 requested without setting top and bottom anchors");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
if (surface->closed) {
|
|
|
|
// Ignore commits after the compositor has closed it
|
|
|
|
return;
|
2023-01-10 16:43:52 +01:00
|
|
|
--
|
|
|
|
GitLab
|
|
|
|
|