seat: use focus_change event to update focused/active view

- Connect to wlr_seat_keyboard_state's focus_change event.
- Add view_from_wlr_surface(), which does what the name says.
- Use focus_change event along with view_from_wlr_surface() to update
  server->focused_view and set SSD states via view_set_activated().
- Eliminate desktop_focused_view() since server->focused_view should be
  reliably up-to-date now.
- Eliminate view_focus/defocus() since we can now just call
  seat_focus_surface() directly.
This commit is contained in:
John Lindgren 2023-09-27 18:24:35 -04:00 committed by Johan Malm
parent bb5d272dc9
commit 4028a9482f
9 changed files with 77 additions and 100 deletions

View file

@ -602,7 +602,7 @@ create_constraint(struct wl_listener *listener, void *data)
constraint->destroy.notify = destroy_constraint;
wl_signal_add(&wlr_constraint->events.destroy, &constraint->destroy);
struct view *view = desktop_focused_view(server);
struct view *view = server->focused_view;
if (view && view->surface == wlr_constraint->surface) {
constrain_cursor(server, wlr_constraint);
}