From: Johan Malm Date: Mon, 12 Jul 2021 20:46:10 +0000 (+0100) Subject: action: add "Close" to close top-most view X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=eaed1a3cab59a507b25ea8a0de39346adbf9e17d;p=proto%2Flabwc.git action: add "Close" to close top-most view --- diff --git a/docs/labwc-actions.5.scd b/docs/labwc-actions.5.scd index 3f04379a..2035f987 100644 --- a/docs/labwc-actions.5.scd +++ b/docs/labwc-actions.5.scd @@ -8,6 +8,9 @@ labwc - actions Actions are used in keyboard bindings. +** + Close top-most view. + ** Execute command. diff --git a/include/labwc.h b/include/labwc.h index c1cd528b..08905473 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -308,6 +308,7 @@ void desktop_focus_view(struct seat *seat, struct view *view); * Note: If !current, the server->views second focusable view is returned */ struct view *desktop_cycle_view(struct server *server, struct view *current); +struct view *topmost_mapped_view(struct server *server); void desktop_focus_topmost_mapped_view(struct server *server); /** diff --git a/src/action.c b/src/action.c index f20d348d..a03cdfda 100644 --- a/src/action.c +++ b/src/action.c @@ -23,7 +23,10 @@ action(struct server *server, const char *action, const char *command) { if (!action) return; - if (!strcasecmp(action, "Debug")) { + if (!strcasecmp(action, "Close")) { + struct view *view = topmost_mapped_view(server); + view->impl->close(view); + } else if (!strcasecmp(action, "Debug")) { /* nothing */ } else if (!strcasecmp(action, "Execute")) { struct buf cmd; diff --git a/src/desktop.c b/src/desktop.c index 26aa9cf1..a90e134f 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -189,7 +189,7 @@ has_mapped_view(struct wl_list *wl_list) return false; } -static struct view * +struct view * topmost_mapped_view(struct server *server) { if (!has_mapped_view(&server->views)) {