* - Pre-select the top view if NOT already focused
* - Otherwise select the view second from the top
*/
+
+ /* Make sure to have all nodes in their actual ordering */
+ osd_preview_restore(server);
+
if (!start_view) {
start_view = first_view(server);
if (!start_view || start_view != desktop_focused_view(server)) {
/* Scene nodes are ordered like last node == displayed topmost */
iter = dir == LAB_CYCLE_DIR_FORWARD ? get_prev_item : get_next_item;
- /* Make sure to have all nodes in their actual ordering */
- osd_preview_restore(server);
-
do {
list_item = iter(list_item);
if (list_item == list_head) {
* If we are the current OSD selected view, cycle
* to the next because we are dying.
*/
+
+ /* Also resets preview node */
osd_state->cycle_view = desktop_cycle_view(view->server,
osd_state->cycle_view, LAB_CYCLE_DIR_BACKWARD);
}
}
+ if (osd_state->cycle_view) {
+ /* Update the OSD to reflect the view has now gone. */
+ osd_update(view->server);
+ }
+
if (view->scene_tree) {
struct wlr_scene_node *node = &view->scene_tree->node;
if (osd_state->preview_anchor == node) {
osd_state->preview_anchor = lab_wlr_scene_get_prev_node(node);
}
}
-
- if (osd_state->cycle_view) {
- /* Update the OSD to reflect the view has now gone. */
- osd_update(view->server);
- }
}
void