diff --git a/sway/layout.c b/sway/layout.c index 72d3de77..4fdf7b51 100644 --- a/sway/layout.c +++ b/sway/layout.c @@ -130,6 +130,7 @@ swayc_t *remove_child(swayc_t *child) { parent->focused = NULL; } } + child->parent = NULL; // deactivate view if (child->type == C_VIEW) { wlc_view_set_state(child->handle, WLC_BIT_ACTIVATED, false); @@ -219,7 +220,7 @@ void move_container(swayc_t *container,swayc_t* root,enum movement_direction dir } void move_container_to(swayc_t* container, swayc_t* destination) { - if (container->parent == destination) { + if (container == destination) { return; } swayc_t *parent = remove_child(container); @@ -236,8 +237,10 @@ void move_container_to(swayc_t* container, swayc_t* destination) { } // Destroy old container if we need to parent = destroy_container(parent); + // Refocus set_focused_container(get_focused_view(&root_container)); update_visibility(container); + update_visibility(parent); arrange_windows(parent, -1, -1); arrange_windows(destination->parent, -1, -1); } diff --git a/sway/log.c b/sway/log.c index 66898a28..efe00439 100644 --- a/sway/log.c +++ b/sway/log.c @@ -105,15 +105,15 @@ bool _sway_assert(bool condition, const char* format, ...) { return true; } -#ifndef NDEBUG - raise(SIGABRT); -#endif - va_list args; va_start(args, format); sway_log(L_ERROR, format, args); va_end(args); +#ifndef NDEBUG + raise(SIGABRT); +#endif + return false; }