From e59cffcea2a881f16de3716c6b24d93aceb8c79a Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sun, 29 Nov 2015 12:03:13 -0500 Subject: Support desktop shell panels in compositor --- sway/layout.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'sway/layout.c') diff --git a/sway/layout.c b/sway/layout.c index de186886..70980ec3 100644 --- a/sway/layout.c +++ b/sway/layout.c @@ -1,6 +1,7 @@ #include #include #include +#include "extensions.h" #include "layout.h" #include "log.h" #include "list.h" @@ -426,6 +427,27 @@ static void arrange_windows_r(swayc_t *container, double width, double height) { } return; case C_OUTPUT: + for (i = 0; i < desktop_shell.panels->length; ++i) { + struct panel_config *config = desktop_shell.panels->items[i]; + if (config->output == container->handle) { + struct wlc_size size = *wlc_surface_get_size(config->surface); + switch (desktop_shell.panel_position) { + case DESKTOP_SHELL_PANEL_POSITION_TOP: + y += size.h; height -= size.h; + break; + case DESKTOP_SHELL_PANEL_POSITION_BOTTOM: + height -= size.h; + break; + case DESKTOP_SHELL_PANEL_POSITION_LEFT: + x += size.w; width -= size.w; + break; + case DESKTOP_SHELL_PANEL_POSITION_RIGHT: + width -= size.w; + break; + } + } + } + container->width = width; container->height = height; x = 0, y = 0; -- cgit v1.2.3