aboutsummaryrefslogtreecommitdiff
path: root/sway/handlers.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/handlers.c')
-rw-r--r--sway/handlers.c12
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 "