From: bi4k8 Date: Fri, 3 Dec 2021 02:36:38 +0000 (+0000) Subject: move windows to back of cycle when they are minimized X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=7b7178ebfa0ff1cd99b38c91fc42af6128d99044;p=proto%2Flabwc.git move windows to back of cycle when they are minimized --- diff --git a/include/labwc.h b/include/labwc.h index ceeb40a1..cff99900 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -397,6 +397,7 @@ void foreign_toplevel_handle_create(struct view *view); */ void desktop_raise_view(struct view *view); +void desktop_move_view_to_end_of_cycle(struct view *to_end); void desktop_focus_and_activate_view(struct seat *seat, struct view *view); enum lab_cycle_dir { diff --git a/src/desktop.c b/src/desktop.c index 2dd050c9..8963ee4a 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -170,6 +170,18 @@ desktop_cycle_view(struct server *server, struct view *current, enum lab_cycle_d return view; } +void +desktop_move_view_to_end_of_cycle(struct view *to_end) { + wl_list_remove(&to_end->link); + struct view *view; + wl_list_for_each_reverse (view, &to_end->server->views, link) { + wl_list_insert(&view->link, &to_end->link); + return; + } + /* if the foreach did not return, this window was the only one in the list, so just reinsert it at the start */ + wl_list_insert(&to_end->server->views, &to_end->link); +} + static bool has_mapped_view(struct wl_list *wl_list) { diff --git a/src/view.c b/src/view.c index b4d58295..274c376e 100644 --- a/src/view.c +++ b/src/view.c @@ -79,6 +79,7 @@ view_minimize(struct view *view, bool minimized) view->minimized = minimized; if (minimized) { view->impl->unmap(view); + desktop_move_view_to_end_of_cycle(view); } else { view->impl->map(view); }