*/
void desktop_update_top_layer_visiblity(struct server *server);
-/**
- * desktop_cycle_view - return view to 'cycle' to
- * @start_view: reference point for finding next view to cycle to
- * Note: If !start_view, the second focusable view is returned
- */
-struct view *desktop_cycle_view(struct server *server, struct view *start_view,
- enum lab_cycle_dir dir);
-
/**
* desktop_focus_topmost_view() - focus the topmost view on the current
* workspace, skipping views that claim not to want focus (those can
}
}
-struct view *
-desktop_cycle_view(struct server *server, struct view *start_view,
- enum lab_cycle_dir dir)
-{
- struct view *(*iter)(struct wl_list *head, struct view *view,
- enum lab_view_criteria criteria);
- bool forwards = dir == LAB_CYCLE_DIR_FORWARD;
- iter = forwards ? view_next_no_head_stop : view_prev_no_head_stop;
-
- enum lab_view_criteria criteria = rc.window_switcher.criteria;
-
- /*
- * Views are listed in stacking order, topmost first. Usually the
- * topmost view is already focused, so when iterating in the forward
- * direction we pre-select the view second from the top:
- *
- * View #1 (on top, currently focused)
- * View #2 (pre-selected)
- * View #3
- * ...
- */
- if (!start_view && forwards) {
- start_view = iter(&server->views, NULL, criteria);
- }
-
- return iter(&server->views, start_view, criteria);
-}
-
struct view *
desktop_topmost_focusable_view(struct server *server)
{
wlr_scene_node_set_position(&rect->tree->node, geo.x, geo.y);
}
+/*
+ * Returns the view to select next in the window switcher.
+ * If !start_view, the second focusable view is returned.
+ */
+static struct view *
+get_next_cycle_view(struct server *server, struct view *start_view,
+ enum lab_cycle_dir dir)
+{
+ struct view *(*iter)(struct wl_list *head, struct view *view,
+ enum lab_view_criteria criteria);
+ bool forwards = dir == LAB_CYCLE_DIR_FORWARD;
+ iter = forwards ? view_next_no_head_stop : view_prev_no_head_stop;
+
+ enum lab_view_criteria criteria = rc.window_switcher.criteria;
+
+ /*
+ * Views are listed in stacking order, topmost first. Usually the
+ * topmost view is already focused, so when iterating in the forward
+ * direction we pre-select the view second from the top:
+ *
+ * View #1 (on top, currently focused)
+ * View #2 (pre-selected)
+ * View #3
+ * ...
+ */
+ if (!start_view && forwards) {
+ start_view = iter(&server->views, NULL, criteria);
+ }
+
+ return iter(&server->views, start_view, criteria);
+}
+
void
osd_on_view_destroy(struct view *view)
{
*/
/* Also resets preview node */
- osd_state->cycle_view = desktop_cycle_view(view->server,
+ osd_state->cycle_view = get_next_cycle_view(view->server,
osd_state->cycle_view, LAB_CYCLE_DIR_BACKWARD);
/*
server->osd_state.initial_direction = direction;
server->osd_state.initial_keybind_contained_shift =
shift_is_pressed(server);
- server->osd_state.cycle_view = desktop_cycle_view(server,
+ server->osd_state.cycle_view = get_next_cycle_view(server,
server->osd_state.cycle_view, direction);
seat_focus_override_begin(&server->seat,
{
assert(server->input_mode == LAB_INPUT_STATE_WINDOW_SWITCHER);
- server->osd_state.cycle_view = desktop_cycle_view(server,
+ server->osd_state.cycle_view = get_next_cycle_view(server,
server->osd_state.cycle_view, direction);
osd_update(server);
}