aboutsummaryrefslogtreecommitdiff
path: root/sway/focus.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/focus.c')
-rw-r--r--sway/focus.c19
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;
+}