diff options
author | Zandr Martin <zandrmartin@gmail.com> | 2016-09-02 13:46:19 -0500 |
---|---|---|
committer | Zandr Martin <zandrmartin@gmail.com> | 2016-09-02 13:46:19 -0500 |
commit | 79ffea328c992c5109406771a59a9f016d85970d (patch) | |
tree | 5d965e72127f227ea0a38dc5c6e4fc14e08d9498 /sway/focus.c | |
parent | b374c35758777f98e5ddbe4b0dc43bd7c80f36d7 (diff) | |
parent | 4e6d7b125895955e3a84583c6d61f3eb2f8a4fe9 (diff) | |
download | sway-79ffea328c992c5109406771a59a9f016d85970d.tar.xz |
Merge branch 'master' of git://github.com/SirCmpwn/sway into commands-refactor
Diffstat (limited to 'sway/focus.c')
-rw-r--r-- | sway/focus.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/sway/focus.c b/sway/focus.c index 145e5584..02e61ac2 100644 --- a/sway/focus.c +++ b/sway/focus.c @@ -1,13 +1,13 @@ #include <wlc/wlc.h> - -#include "focus.h" +#include "sway/focus.h" +#include "sway/workspace.h" +#include "sway/layout.h" +#include "sway/config.h" +#include "sway/extensions.h" +#include "sway/input_state.h" +#include "sway/ipc-server.h" +#include "sway/border.h" #include "log.h" -#include "workspace.h" -#include "layout.h" -#include "config.h" -#include "input_state.h" -#include "ipc-server.h" -#include "border.h" bool locked_container_focus = false; bool suspend_workspace_cleanup = false; @@ -89,7 +89,6 @@ swayc_t *get_focused_container(swayc_t *parent) { if (!parent) { return swayc_active_workspace(); } - // get focused container while (!parent->is_focused && parent->focused) { parent = parent->focused; } @@ -133,24 +132,24 @@ bool set_focused_container(swayc_t *c) { p->is_focused = false; } - // get new focused view and set focus to it. if (!(wlc_view_get_type(p->handle) & WLC_BIT_POPUP)) { - // unactivate previous focus if (focused->type == C_VIEW) { wlc_view_set_state(focused->handle, WLC_BIT_ACTIVATED, false); } update_container_border(focused); - // activate current focus if (c->type == C_VIEW) { wlc_view_set_state(c->handle, WLC_BIT_ACTIVATED, true); } - // set focus - wlc_view_focus(c->handle); + if (!desktop_shell.is_locked) { + // If the system is locked, we do everything _but_ actually setting + // focus. This includes making our internals think that this view is + // focused. + wlc_view_focus(c->handle); + } if (c->parent->layout != L_TABBED && c->parent->layout != L_STACKED) { update_container_border(c); } - // rearrange if parent container is tabbed/stacked swayc_t *parent = swayc_tabbed_stacked_ancestor(c); if (parent != NULL) { arrange_backgrounds(); @@ -175,7 +174,6 @@ bool set_focused_container_for(swayc_t *a, swayc_t *c) { return false; } swayc_t *find = c; - // Ensure that a is an ancestor of c while (find != a && (find = find->parent)) { if (find == &root_container) { return false; |