xdg-shell: Add invalid_parent error to xdg_popup
Send an invalid_parent error when the client tries to create a popup with a paren that is neither a xdg_surface nor a xdg_popup. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
parent
da6ecd0cc5
commit
24185e2561
@ -4092,12 +4092,21 @@ create_xdg_popup(struct shell_client *owner, void *shell,
|
||||
uint32_t serial,
|
||||
int32_t x, int32_t y)
|
||||
{
|
||||
struct shell_surface *shsurf;
|
||||
struct shell_surface *shsurf, *parent_shsurf;
|
||||
|
||||
/* Verify that we are creating the top most popup when mapping,
|
||||
* as its not until then we know whether it was mapped as most
|
||||
* top level or not. */
|
||||
|
||||
parent_shsurf = get_shell_surface(parent);
|
||||
if (!shell_surface_is_xdg_popup(parent_shsurf) &&
|
||||
!shell_surface_is_xdg_surface(parent_shsurf)) {
|
||||
wl_resource_post_error(owner->resource,
|
||||
XDG_POPUP_ERROR_INVALID_PARENT,
|
||||
"xdg_popup parent was invalid");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
shsurf = create_common_surface(owner, shell, surface, client);
|
||||
if (!shsurf)
|
||||
return NULL;
|
||||
|
@ -403,6 +403,7 @@
|
||||
These errors can be emitted in response to xdg_popup requests.
|
||||
</description>
|
||||
<entry name="not_the_topmost_popup" value="0" summary="The client tried to map or destroy a non-topmost popup"/>
|
||||
<entry name="invalid_parent" value="1" summary="The client specified an invalid parent surface"/>
|
||||
</enum>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
|
Loading…
Reference in New Issue
Block a user