|
|
|
@ -413,31 +413,28 @@ struct sway_container *container_at(struct sway_container *parent,
|
|
|
|
|
double view_sy = oy - swayc->y;
|
|
|
|
|
|
|
|
|
|
switch (sview->type) {
|
|
|
|
|
case SWAY_WL_SHELL_VIEW:
|
|
|
|
|
break;
|
|
|
|
|
case SWAY_XDG_SHELL_V6_VIEW:
|
|
|
|
|
// the top left corner of the sway container is the
|
|
|
|
|
// coordinate of the top left corner of the window geometry
|
|
|
|
|
view_sx += sview->wlr_xdg_surface_v6->geometry.x;
|
|
|
|
|
view_sy += sview->wlr_xdg_surface_v6->geometry.y;
|
|
|
|
|
|
|
|
|
|
// check for popups
|
|
|
|
|
double popup_sx, popup_sy;
|
|
|
|
|
struct wlr_xdg_surface_v6 *popup =
|
|
|
|
|
wlr_xdg_surface_v6_popup_at(sview->wlr_xdg_surface_v6,
|
|
|
|
|
view_sx, view_sy, &popup_sx, &popup_sy);
|
|
|
|
|
|
|
|
|
|
if (popup) {
|
|
|
|
|
*sx = view_sx - popup_sx;
|
|
|
|
|
*sy = view_sy - popup_sy;
|
|
|
|
|
*surface = popup->surface;
|
|
|
|
|
return swayc;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case SWAY_XWAYLAND_VIEW:
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
case SWAY_VIEW_XWAYLAND:
|
|
|
|
|
case SWAY_VIEW_WL_SHELL:
|
|
|
|
|
break;
|
|
|
|
|
case SWAY_VIEW_XDG_SHELL_V6:
|
|
|
|
|
// the top left corner of the sway container is the
|
|
|
|
|
// coordinate of the top left corner of the window geometry
|
|
|
|
|
view_sx += sview->wlr_xdg_surface_v6->geometry.x;
|
|
|
|
|
view_sy += sview->wlr_xdg_surface_v6->geometry.y;
|
|
|
|
|
|
|
|
|
|
// check for popups
|
|
|
|
|
double popup_sx, popup_sy;
|
|
|
|
|
struct wlr_xdg_surface_v6 *popup =
|
|
|
|
|
wlr_xdg_surface_v6_popup_at(sview->wlr_xdg_surface_v6,
|
|
|
|
|
view_sx, view_sy, &popup_sx, &popup_sy);
|
|
|
|
|
|
|
|
|
|
if (popup) {
|
|
|
|
|
*sx = view_sx - popup_sx;
|
|
|
|
|
*sy = view_sy - popup_sy;
|
|
|
|
|
*surface = popup->surface;
|
|
|
|
|
return swayc;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// check for subsurfaces
|
|
|
|
|