wlr_surface_iterator_func_t iterator, void *user_data);
void view_for_each_popup_surface(struct view *view,
wlr_surface_iterator_func_t iterator, void *data);
+void view_output_enter(struct view *view, struct wlr_output *wlr_output);
+void view_output_leave(struct view *view, struct wlr_output *wlr_output);
void view_move_to_edge(struct view *view, const char *direction);
void view_snap_to_edge(struct view *view, const char *direction);
const char *view_get_string_prop(struct view *view, const char *prop);
return border;
}
+void
+surface_enter_for_each_surface(struct wlr_surface *surface, int sx, int sy,
+ void *user_data)
+{
+ struct wlr_output *wlr_output = user_data;
+ wlr_surface_send_enter(surface, wlr_output);
+}
+
+void
+surface_leave_for_each_surface(struct wlr_surface *surface, int sx, int sy,
+ void *user_data)
+{
+ struct wlr_output *wlr_output = user_data;
+ wlr_surface_send_leave(surface, wlr_output);
+}
+
+void
+view_output_enter(struct view *view, struct wlr_output *wlr_output)
+{
+ view_for_each_surface(view, surface_enter_for_each_surface,
+ wlr_output);
+ if (view->toplevel_handle) {
+ wlr_foreign_toplevel_handle_v1_output_enter(
+ view->toplevel_handle, wlr_output);
+ }
+}
+
+void
+view_output_leave(struct view *view, struct wlr_output *wlr_output)
+{
+ view_for_each_surface(view, surface_leave_for_each_surface,
+ wlr_output);
+ if (view->toplevel_handle) {
+ wlr_foreign_toplevel_handle_v1_output_leave(
+ view->toplevel_handle, wlr_output);
+ }
+}
+
void
view_move_to_edge(struct view *view, const char *direction)
{
current.link) {
view_subsurface_create(view, subsurface);
}
+ struct wlr_output *wlr_output = view_wlr_output(view);
+ view_output_enter(view, wlr_output);
view->been_mapped = true;
}