diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-09-02 15:03:58 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-09-02 18:20:34 +1000 |
commit | f057a0195ee79dfcaeddbcab026c06e310998c75 (patch) | |
tree | 5c09cc286ae3a6d852341a0ae4796d28bb6155b0 /sway/tree | |
parent | 159edc6d13db42b15b28c7ea58cdf2371d29297d (diff) | |
download | sway-f057a0195ee79dfcaeddbcab026c06e310998c75.tar.xz |
Implement focus_on_window_activation
Depends on https://github.com/swaywm/wlroots/pull/1223
Diffstat (limited to 'sway/tree')
-rw-r--r-- | sway/tree/view.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c index 1a98c5f2..c6ed68f6 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -280,6 +280,29 @@ 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 { + view_set_urgent(view, true); + } +} + void view_set_tiled(struct sway_view *view, bool tiled) { if (!tiled) { view->using_csd = true; |