diff options
Diffstat (limited to 'sway/handlers.c')
-rw-r--r-- | sway/handlers.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/sway/handlers.c b/sway/handlers.c index 6ccf2b11..33e75d6b 100644 --- a/sway/handlers.c +++ b/sway/handlers.c | |||
@@ -552,7 +552,7 @@ static void handle_view_destroyed(wlc_handle handle) { | |||
552 | if (view) { | 552 | if (view) { |
553 | bool fullscreen = swayc_is_fullscreen(view); | 553 | bool fullscreen = swayc_is_fullscreen(view); |
554 | remove_view_from_scratchpad(view); | 554 | remove_view_from_scratchpad(view); |
555 | swayc_t *parent = destroy_view(view); | 555 | swayc_t *parent = destroy_view(view), *iter = NULL; |
556 | if (parent) { | 556 | if (parent) { |
557 | ipc_event_window(parent, "close"); | 557 | ipc_event_window(parent, "close"); |
558 | 558 | ||
@@ -566,17 +566,18 @@ static void handle_view_destroyed(wlc_handle handle) { | |||
566 | } | 566 | } |
567 | 567 | ||
568 | if (fullscreen) { | 568 | if (fullscreen) { |
569 | while (parent) { | 569 | iter = parent; |
570 | if (parent->fullscreen) { | 570 | while (iter) { |
571 | parent->fullscreen = NULL; | 571 | if (iter->fullscreen) { |
572 | iter->fullscreen = NULL; | ||
572 | break; | 573 | break; |
573 | } | 574 | } |
574 | parent = parent->parent; | 575 | iter = iter->parent; |
575 | } | 576 | } |
576 | } | 577 | } |
577 | 578 | ||
578 | 579 | ||
579 | arrange_windows(parent, -1, -1); | 580 | arrange_windows(iter ? iter : parent, -1, -1); |
580 | } | 581 | } |
581 | } else { | 582 | } else { |
582 | // Is it unmanaged? | 583 | // Is it unmanaged? |