void (*move_to_back)(struct view *view);
struct view *(*get_root)(struct view *self);
void (*append_children)(struct view *self, struct wl_array *children);
- /* determines if view and surface are owned by the same process */
- bool (*is_related)(struct view *self, struct wlr_surface *surface);
struct view_size_hints (*get_size_hints)(struct view *self);
/* if not implemented, VIEW_WANTS_FOCUS_ALWAYS is assumed */
enum view_wants_focus (*wants_focus)(struct view *self);
void view_append_children(struct view *view, struct wl_array *children);
bool view_on_output(struct view *view, struct output *output);
-/**
- * view_is_related() - determine if view and surface are owned by the
- * same application/process. Currently only implemented for xwayland
- * views/surfaces.
- */
-bool view_is_related(struct view *view, struct wlr_surface *surface);
-
/**
* view_has_strut_partial() - returns true for views that reserve space
* at a screen edge (e.g. panels). These views are treated as if they
}
}
-bool
-view_is_related(struct view *view, struct wlr_surface *surface)
-{
- assert(view);
- assert(surface);
- if (view->impl->is_related) {
- return view->impl->is_related(view, surface);
- }
- return false;
-}
-
bool
view_has_strut_partial(struct view *view)
{
}
}
-static bool
-xwayland_view_is_related(struct view *view, struct wlr_surface *surface)
-{
- struct wlr_xwayland_surface *xsurface =
- xwayland_surface_from_view(view);
- struct wlr_xwayland_surface *xsurface2 =
- wlr_xwayland_surface_try_from_wlr_surface(surface);
-
- return (xsurface2 && xsurface2->pid == xsurface->pid);
-}
-
static void
xwayland_view_set_activated(struct view *view, bool activated)
{
.move_to_back = xwayland_view_move_to_back,
.get_root = xwayland_view_get_root,
.append_children = xwayland_view_append_children,
- .is_related = xwayland_view_is_related,
.get_size_hints = xwayland_view_get_size_hints,
.wants_focus = xwayland_view_wants_focus,
.has_strut_partial = xwayland_view_has_strut_partial,