bool view_want_deco(struct view *view);
void view_focus_last_toplevel(struct server *server);
-void focus_view(struct view *view, struct wlr_surface *surface);
+void view_focus(struct view *view);
void view_focus_next_toplevel(struct view *current);
void begin_interactive(struct view *view, enum cursor_mode mode,
uint32_t edges);
server->cursor_mode = TINYWL_CURSOR_PASSTHROUGH;
} else {
/* Focus that client if the button was _pressed_ */
- focus_view(view, surface);
+ view_focus(view);
switch (view_area) {
case LAB_DECO_PART_TOP:
begin_interactive(view, TINYWL_CURSOR_MOVE, 0);
if (wl_list_length(&server->views) < 2)
return;
struct view *view = last_toplevel(server);
- focus_view(view, view->surface);
+ view_focus(view);
}
static struct view *next_toplevel(struct view *current)
{
struct view *view;
view = next_toplevel(current);
- focus_view(view, view->surface);
+ view_focus(view);
}
static void move_to_front(struct view *view)
}
}
-/* FIXME: why have we got both view and surface here???? */
-void focus_view(struct view *view, struct wlr_surface *surface)
+void view_focus(struct view *view)
{
/* Note: this function only deals with keyboard focus. */
- if (!view)
+ if (!view || !view->surface)
return;
struct server *server = view->server;
struct wlr_seat *seat = server->seat;
struct wlr_surface *prev_surface;
prev_surface = seat->keyboard_state.focused_surface;
- if (prev_surface == surface) {
+ if (prev_surface == view->surface) {
/* Don't re-focus an already focused surface. */
return;
}
}
static bool _view_at(struct view *view, double lx, double ly,
- struct wlr_surface **surface, double *sx, double *sy)
+ struct wlr_surface **surface, double *sx, double *sy)
{
/*
* XDG toplevels may have nested surfaces, such as popup windows for
view->mapped = true;
view->been_mapped = true;
view->surface = view->xdg_surface->surface;
- focus_view(view, view->xdg_surface->surface);
+ view_focus(view);
}
void xdg_surface_unmap(struct wl_listener *listener, void *data)