aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rootston/desktop.c2
-rw-r--r--types/wlr_xdg_shell.c7
-rw-r--r--types/wlr_xdg_shell_v6.c7
3 files changed, 4 insertions, 12 deletions
diff --git a/rootston/desktop.c b/rootston/desktop.c
index 177828af..4edcb5e3 100644
--- a/rootston/desktop.c
+++ b/rootston/desktop.c
@@ -593,10 +593,12 @@ static bool view_at(struct roots_view *view, double lx, double ly,
_surface = wlr_wl_shell_surface_surface_at(view->wl_shell_surface,
view_sx, view_sy, &_sx, &_sy);
break;
+#ifdef WLR_HAS_XWAYLAND
case ROOTS_XWAYLAND_VIEW:
_surface = wlr_surface_surface_at(view->wlr_surface,
view_sx, view_sy, &_sx, &_sy);
break;
+#endif
}
if (_surface != NULL) {
*sx = _sx;
diff --git a/types/wlr_xdg_shell.c b/types/wlr_xdg_shell.c
index 43ccd5aa..d4848e35 100644
--- a/types/wlr_xdg_shell.c
+++ b/types/wlr_xdg_shell.c
@@ -589,13 +589,8 @@ static void xdg_popup_handle_destroy(struct wl_client *client,
struct wl_resource *resource) {
struct wlr_xdg_surface *surface =
xdg_surface_from_xdg_popup_resource(resource);
- struct wlr_xdg_popup_grab *grab =
- xdg_shell_popup_grab_from_seat(surface->client->shell,
- surface->popup->seat);
- struct wlr_xdg_surface *topmost =
- xdg_popup_grab_get_topmost(grab);
- if (topmost != surface) {
+ if (!wl_list_empty(&surface->popups)) {
wl_resource_post_error(surface->client->resource,
XDG_WM_BASE_ERROR_NOT_THE_TOPMOST_POPUP,
"xdg_popup was destroyed while it was not the topmost popup");
diff --git a/types/wlr_xdg_shell_v6.c b/types/wlr_xdg_shell_v6.c
index e7a35f97..f1258f0f 100644
--- a/types/wlr_xdg_shell_v6.c
+++ b/types/wlr_xdg_shell_v6.c
@@ -545,13 +545,8 @@ static void xdg_popup_handle_destroy(struct wl_client *client,
struct wl_resource *resource) {
struct wlr_xdg_surface_v6 *surface =
xdg_surface_from_xdg_popup_resource(resource);
- struct wlr_xdg_popup_grab_v6 *grab =
- xdg_shell_popup_grab_from_seat(surface->client->shell,
- surface->popup->seat);
- struct wlr_xdg_surface_v6 *topmost =
- xdg_popup_grab_get_topmost(grab);
- if (topmost != surface) {
+ if (!wl_list_empty(&surface->popups)) {
wl_resource_post_error(surface->client->resource,
ZXDG_SHELL_V6_ERROR_NOT_THE_TOPMOST_POPUP,
"xdg_popup was destroyed while it was not the topmost popup");