diff options
Diffstat (limited to 'sway')
-rw-r--r-- | sway/tree/view.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c index c6ed68f6..6bd0ef67 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -281,25 +281,25 @@ void view_set_activated(struct sway_view *view, bool activated) { } void view_request_activate(struct sway_view *view) { - if (config->focus_on_window_activation == FOWA_NONE) { - return; - } - if (config->focus_on_window_activation == FOWA_FOCUS) { - struct sway_seat *seat = input_manager_current_seat(input_manager); - seat_set_focus(seat, view->swayc); - return; - } - if (config->focus_on_window_activation == FOWA_URGENT) { - view_set_urgent(view, true); - return; - } - // FOWA_SMART struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE); - if (workspace_is_visible(ws)) { - struct sway_seat *seat = input_manager_current_seat(input_manager); - seat_set_focus(seat, view->swayc); - } else { + struct sway_seat *seat = input_manager_current_seat(input_manager); + + switch (config->focus_on_window_activation) { + case FOWA_SMART: + if (workspace_is_visible(ws)) { + seat_set_focus(seat, view->swayc); + } else { + view_set_urgent(view, true); + } + break; + case FOWA_URGENT: view_set_urgent(view, true); + break; + case FOWA_FOCUS: + seat_set_focus(seat, view->swayc); + break; + case FOWA_NONE: + break; } } |