From 7b7178ebfa0ff1cd99b38c91fc42af6128d99044 Mon Sep 17 00:00:00 2001 From: bi4k8 Date: Fri, 3 Dec 2021 02:36:38 +0000 Subject: [PATCH] move windows to back of cycle when they are minimized --- include/labwc.h | 1 + src/desktop.c | 12 ++++++++++++ src/view.c | 1 + 3 files changed, 14 insertions(+) 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); } -- 2.52.0