From c668fd9b07ef83341c6e46aff22945689013451a Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Tue, 13 Jul 2021 21:54:22 +0100 Subject: [PATCH] action: add "ToggleMaximize" --- docs/labwc-actions.5.scd | 3 +++ src/action.c | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/labwc-actions.5.scd b/docs/labwc-actions.5.scd index 2035f987..62b99848 100644 --- a/docs/labwc-actions.5.scd +++ b/docs/labwc-actions.5.scd @@ -26,6 +26,9 @@ Actions are used in keyboard bindings. ** Show menu. Valid menu name is "root-menu". +** + Toggle maximize state of top-most window. + # SEE ALSO labwc(1), labwc-config(5), labwc-theme(5) diff --git a/src/action.c b/src/action.c index a03cdfda..a1cef98e 100644 --- a/src/action.c +++ b/src/action.c @@ -25,7 +25,9 @@ action(struct server *server, const char *action, const char *command) return; if (!strcasecmp(action, "Close")) { struct view *view = topmost_mapped_view(server); - view->impl->close(view); + if (view) { + view->impl->close(view); + } } else if (!strcasecmp(action, "Debug")) { /* nothing */ } else if (!strcasecmp(action, "Execute")) { @@ -44,6 +46,16 @@ action(struct server *server, const char *action, const char *command) spawn_async_no_shell("killall -SIGHUP labwc"); } else if (!strcasecmp(action, "ShowMenu")) { show_menu(server, command); + } else if (!strcasecmp(action, "ToggleMaximize")) { + struct view *view = topmost_mapped_view(server); + if (!view) { + return; + } + if (view->maximized) { + view_maximize(view, false); + } else { + view_maximize(view, true); + } } else { warn("action (%s) not supported", action); }