diff options
Diffstat (limited to 'sway/focus.c')
-rw-r--r-- | sway/focus.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sway/focus.c b/sway/focus.c index 2219ab4a..1d21ac35 100644 --- a/sway/focus.c +++ b/sway/focus.c @@ -243,3 +243,22 @@ swayc_t *get_focused_float(swayc_t *ws) { } return NULL; } + +swayc_t *get_focused_view_include_floating(swayc_t *parent) { + swayc_t *c = parent; + swayc_t *f = NULL; + + while (c && c->type != C_VIEW) { + if (c->type == C_WORKSPACE && c->focused == NULL) { + return ((f = get_focused_float(c))) ? f : c; + } + + c = c->focused; + } + + if (c == NULL) { + c = swayc_active_workspace_for(parent); + } + + return c; +} |