diff options
-rw-r--r-- | sway/ipc-json.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/sway/ipc-json.c b/sway/ipc-json.c index bebe6dd7..f61e1a8c 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c | |||
@@ -352,8 +352,9 @@ static void ipc_json_describe_workspace(struct sway_workspace *workspace, | |||
352 | 352 | ||
353 | static void get_deco_rect(struct sway_container *c, struct wlr_box *deco_rect) { | 353 | static void get_deco_rect(struct sway_container *c, struct wlr_box *deco_rect) { |
354 | enum sway_container_layout parent_layout = container_parent_layout(c); | 354 | enum sway_container_layout parent_layout = container_parent_layout(c); |
355 | if ((parent_layout != L_TABBED && parent_layout != L_STACKED && | 355 | bool tab_or_stack = parent_layout == L_TABBED || parent_layout == L_STACKED; |
356 | c->current.border != B_NORMAL) || | 356 | if (((!tab_or_stack || container_is_floating(c)) && |
357 | c->current.border != B_NORMAL) || | ||
357 | c->fullscreen_mode != FULLSCREEN_NONE || | 358 | c->fullscreen_mode != FULLSCREEN_NONE || |
358 | c->workspace == NULL) { | 359 | c->workspace == NULL) { |
359 | deco_rect->x = deco_rect->y = deco_rect->width = deco_rect->height = 0; | 360 | deco_rect->x = deco_rect->y = deco_rect->width = deco_rect->height = 0; |
@@ -370,17 +371,19 @@ static void get_deco_rect(struct sway_container *c, struct wlr_box *deco_rect) { | |||
370 | deco_rect->width = c->width; | 371 | deco_rect->width = c->width; |
371 | deco_rect->height = container_titlebar_height(); | 372 | deco_rect->height = container_titlebar_height(); |
372 | 373 | ||
373 | if (parent_layout == L_TABBED) { | 374 | if (!container_is_floating(c)) { |
374 | deco_rect->width = c->parent | 375 | if (parent_layout == L_TABBED) { |
375 | ? c->parent->width / c->parent->children->length | 376 | deco_rect->width = c->parent |
376 | : c->workspace->width / c->workspace->tiling->length; | 377 | ? c->parent->width / c->parent->children->length |
377 | deco_rect->x += deco_rect->width * container_sibling_index(c); | 378 | : c->workspace->width / c->workspace->tiling->length; |
378 | } else if (container_parent_layout(c) == L_STACKED) { | 379 | deco_rect->x += deco_rect->width * container_sibling_index(c); |
379 | if (!c->view) { | 380 | } else if (parent_layout == L_STACKED) { |
380 | size_t siblings = container_get_siblings(c)->length; | 381 | if (!c->view) { |
381 | deco_rect->y -= deco_rect->height * siblings; | 382 | size_t siblings = container_get_siblings(c)->length; |
383 | deco_rect->y -= deco_rect->height * siblings; | ||
384 | } | ||
385 | deco_rect->y += deco_rect->height * container_sibling_index(c); | ||
382 | } | 386 | } |
383 | deco_rect->y += deco_rect->height * container_sibling_index(c); | ||
384 | } | 387 | } |
385 | } | 388 | } |
386 | 389 | ||