summaryrefslogtreecommitdiff
path: root/openbox/focus.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-13 20:35:44 +0000
committerDana Jansens <danakj@orodu.net>2007-05-13 20:35:44 +0000
commit7fddf2abc2b76e511be8fc14e22c1f310efe00ef (patch)
treece6ca7b9cd7ad6779126277a5983f82a99e56279 /openbox/focus.c
parent1e5fb0d401e66e8e45340d40e0edd3894505d24a (diff)
some focus fixes. always set the new focus when we fallback or else weird states appear. better handling of focusin's on clients that don't exist?
Diffstat (limited to 'openbox/focus.c')
-rw-r--r--openbox/focus.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/openbox/focus.c b/openbox/focus.c
index a756a9b5..72588a30 100644
--- a/openbox/focus.c
+++ b/openbox/focus.c
@@ -280,19 +280,15 @@ ObClient* focus_fallback(gboolean allow_refocus)
old = focus_client;
new = focus_fallback_target(allow_refocus, focus_client);
- /* send focus somewhere if it is moving or if it was NULL before,
- in which case it may not even be on the screen */
- if (!old || new != old) {
- /* unfocus any focused clients.. they can be focused by Pointer events
- and such, and then when we try focus them, we won't get a FocusIn
- event at all for them. */
- focus_nothing();
-
- if (new) {
- client_focus(new);
- /* remember that we tried to send focus here */
- focus_tried = new;
- }
+ /* unfocus any focused clients.. they can be focused by Pointer events
+ and such, and then when we try focus them, we won't get a FocusIn
+ event at all for them. */
+ focus_nothing();
+
+ if (new) {
+ client_focus(new);
+ /* remember that we tried to send focus here */
+ focus_tried = new;
}
return new;