From 5f9c5a9d01e83db2e9c1a25c0d1fe8fe44a22395 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Sat, 31 Oct 2020 14:32:31 +0000 Subject: [PATCH] desktop: refactor desktop_focus_topmost_mapped_view() Rename from desktop_focus_next_mapped_view() to desktop_focus_topmost_mapped_view() and only take struct server as argument. --- include/labwc.h | 2 +- src/desktop.c | 18 +++++++++--------- src/xdg.c | 2 +- src/xwayland.c | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/labwc.h b/include/labwc.h index de0736c1..559d5bb0 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -232,7 +232,7 @@ void desktop_focus_view(struct seat *seat, struct view *view); * Note: If current==NULL, the list's second view is returned */ struct view *desktop_next_view(struct server *server, struct view *current); -void desktop_focus_next_mapped_view(struct view *current); +void desktop_focus_topmost_mapped_view(struct server *server); struct view *desktop_view_at(struct server *server, double lx, double ly, struct wlr_surface **surface, double *sx, double *sy, int *view_area); diff --git a/src/desktop.c b/src/desktop.c index d818accc..62e6fc18 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -156,26 +156,26 @@ has_mapped_view(struct wl_list *wl_list) return false; } -struct view * -desktop_next_mapped_view(struct view *current) +static struct view * +topmost_mapped_view(struct server *server) { - assert(current); - struct server *server = current->server; if (!has_mapped_view(&server->views)) { return NULL; } - struct view *view = first_view(server); + + /* start from tail of server->views */ + struct view *view = wl_container_of(server->views.prev, view, link); do { view = wl_container_of(view->link.next, view, link); } while (&view->link == &server->views || !view->mapped); return view; } + void -desktop_focus_next_mapped_view(struct view *current) +desktop_focus_topmost_mapped_view(struct server *server) { - assert(current); - struct view *view = desktop_next_mapped_view(current); - desktop_focus_view(¤t->server->seat, view); + struct view *view = topmost_mapped_view(server); + desktop_focus_view(&server->seat, view); } static bool diff --git a/src/xdg.c b/src/xdg.c index c95c8055..b887d0c2 100644 --- a/src/xdg.c +++ b/src/xdg.c @@ -203,7 +203,7 @@ xdg_toplevel_view_unmap(struct view *view) { view->mapped = false; wl_list_remove(&view->commit.link); - desktop_focus_next_mapped_view(view); + desktop_focus_topmost_mapped_view(view->server); } static const struct view_impl xdg_toplevel_view_impl = { diff --git a/src/xwayland.c b/src/xwayland.c index 174e6db6..809e9ce0 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -120,7 +120,7 @@ unmap(struct view *view) { view->mapped = false; wl_list_remove(&view->commit.link); - desktop_focus_next_mapped_view(view); + desktop_focus_topmost_mapped_view(view->server); } static const struct view_impl xwl_view_impl = {