mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-22 04:45:58 +01:00
xdg-shell: send invalid_size errors
This commit is contained in:
parent
6c3d6be74b
commit
c2fb5289c2
3 changed files with 20 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
||||||
wayland_protos = dependency('wayland-protocols',
|
wayland_protos = dependency('wayland-protocols',
|
||||||
version: '>=1.27',
|
version: '>=1.28',
|
||||||
fallback: 'wayland-protocols',
|
fallback: 'wayland-protocols',
|
||||||
default_options: ['tests=false'],
|
default_options: ['tests=false'],
|
||||||
)
|
)
|
||||||
|
|
|
@ -216,9 +216,9 @@ static void xdg_surface_handle_set_window_geometry(struct wl_client *client,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (width <= 0 || height <= 0) {
|
if (width <= 0 || height <= 0) {
|
||||||
wlr_log(WLR_ERROR, "Client tried to set invalid geometry");
|
wl_resource_post_error(resource,
|
||||||
//XXX: Switch to the proper error value once available
|
XDG_SURFACE_ERROR_INVALID_SIZE,
|
||||||
wl_resource_post_error(resource, -1, "Tried to set invalid xdg-surface geometry");
|
"Tried to set invalid xdg-surface geometry");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,6 +116,22 @@ struct wlr_xdg_toplevel_configure *send_xdg_toplevel_configure(
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_xdg_toplevel_committed(struct wlr_xdg_toplevel *toplevel) {
|
void handle_xdg_toplevel_committed(struct wlr_xdg_toplevel *toplevel) {
|
||||||
|
struct wlr_xdg_toplevel_state *pending = &toplevel->pending;
|
||||||
|
|
||||||
|
// 1) Negative values are prohibited
|
||||||
|
// 2) If both min and max are set (aren't 0), min ≤ max
|
||||||
|
if (pending->min_width < 0 || pending->min_height < 0 ||
|
||||||
|
pending->max_width < 0 || pending->max_height < 0 ||
|
||||||
|
(pending->max_width != 0 && pending->max_width < pending->min_width) ||
|
||||||
|
(pending->max_height != 0 && pending->max_height < pending->min_height)) {
|
||||||
|
wl_resource_post_error(toplevel->resource,
|
||||||
|
XDG_TOPLEVEL_ERROR_INVALID_SIZE,
|
||||||
|
"client provided an invalid min or max size");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
toplevel->current = toplevel->pending;
|
||||||
|
|
||||||
if (!toplevel->added) {
|
if (!toplevel->added) {
|
||||||
// on the first commit, send a configure request to tell the client it
|
// on the first commit, send a configure request to tell the client it
|
||||||
// is added
|
// is added
|
||||||
|
@ -133,8 +149,6 @@ void handle_xdg_toplevel_committed(struct wlr_xdg_toplevel *toplevel) {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
toplevel->current = toplevel->pending;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct xdg_toplevel_interface xdg_toplevel_implementation;
|
static const struct xdg_toplevel_interface xdg_toplevel_implementation;
|
||||||
|
|
Loading…
Reference in a new issue