diff options
Diffstat (limited to 'sway/handlers.c')
-rw-r--r-- | sway/handlers.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sway/handlers.c b/sway/handlers.c index 8b127d35..75f6a785 100644 --- a/sway/handlers.c +++ b/sway/handlers.c @@ -163,6 +163,18 @@ static bool handle_view_created(wlc_handle handle) { } if (!focused || focused->type == C_OUTPUT) { focused = get_focused_container(&root_container); + // Move focus from floating view + if (focused->is_floating) { + // To workspace if there are no children + if (focused->parent->children->length == 0) { + focused = focused->parent; + } + // TODO find a better way of doing this + // Or to focused container + else { + focused = get_focused_container(focused->parent->children->items[0]); + } + } } sway_log(L_DEBUG, "handle:%ld type:%x state:%x parent:%ld " "mask:%d (x:%d y:%d w:%d h:%d) title:%s " |