api->send_position(surface, x, y);
}
+bool
+is_shell_surface_xwayland(struct ivi_surface *surf)
+{
+ const struct weston_xwayland_surface_api *api;
+ struct ivi_compositor *ivi = surf->ivi;
+ struct weston_surface *surface;
+
+ api = ivi->xwayland_surface_api;
+
+ if (!api)
+ return false;
+
+ surface = weston_desktop_surface_get_surface(surf->dsurface);
+ return api->is_xwayland_surface(surface);
+}
+
int
ivi_desktop_init(struct ivi_compositor *ivi)
{
return;
}
- if (!surf->ivi->activate_by_default && !surf->xwayland.is_set) {
- weston_log("Refusing to activate surface role %d, app_id %s\n",
- surf->role, app_id);
+ if (!surf->ivi->activate_by_default &&
+ (!surf->xwayland.is_set && !is_shell_surface_xwayland(surf))) {
+ weston_log("Refusing to activate surface role %d, app_id %s, type %s\n",
+ surf->role, app_id,
+ is_shell_surface_xwayland(surf) ?
+ "xwayland" : "regular");
if (!weston_desktop_surface_get_maximized(dsurf) ||
geom.width != r_output->area.width ||
*/
weston_log("Surface no app_id, role %s activating by default\n",
ivi_layout_get_surface_role_name(surf));
- if (surf->xwayland.is_set) {
+ if (surf->xwayland.is_set || is_shell_surface_xwayland(surf)) {
ivi_layout_activate_by_surf(r_output, surf);
ivi_layout_activate_complete(r_output, surf);
} else {