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:
committed by
Pekka Paalanen
parent
da6ecd0cc5
commit
24185e2561
+10
-1
@@ -4092,12 +4092,21 @@ create_xdg_popup(struct shell_client *owner, void *shell,
|
|||||||
uint32_t serial,
|
uint32_t serial,
|
||||||
int32_t x, int32_t y)
|
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,
|
/* Verify that we are creating the top most popup when mapping,
|
||||||
* as its not until then we know whether it was mapped as most
|
* as its not until then we know whether it was mapped as most
|
||||||
* top level or not. */
|
* 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);
|
shsurf = create_common_surface(owner, shell, surface, client);
|
||||||
if (!shsurf)
|
if (!shsurf)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -403,6 +403,7 @@
|
|||||||
These errors can be emitted in response to xdg_popup requests.
|
These errors can be emitted in response to xdg_popup requests.
|
||||||
</description>
|
</description>
|
||||||
<entry name="not_the_topmost_popup" value="0" summary="The client tried to map or destroy a non-topmost popup"/>
|
<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>
|
</enum>
|
||||||
|
|
||||||
<request name="destroy" type="destructor">
|
<request name="destroy" type="destructor">
|
||||||
|
|||||||
Reference in New Issue
Block a user