summaryrefslogtreecommitdiff
path: root/openbox/focus.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-08-04 13:29:13 -0400
committerDana Jansens <danakj@orodu.net>2007-08-04 13:29:13 -0400
commit0cfd92ab9e56d8f790c92b83436e981fa46efe20 (patch)
tree0742fe9d489d5ba1c32ba754ed90d0ba4e4c3208 /openbox/focus.c
parentac59dd4fe53330d717a12f55f6bfc17467ad2ae2 (diff)
don't make omnipresent windows lose focus when changing desktops. this is done by allowing focus_fallback to specify if focus has been lost or not. usually if you're call it, focus is lost, but not always.
Diffstat (limited to 'openbox/focus.c')
-rw-r--r--openbox/focus.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/openbox/focus.c b/openbox/focus.c
index 0dafd799..b056db7e 100644
--- a/openbox/focus.c
+++ b/openbox/focus.c
@@ -159,7 +159,7 @@ static ObClient* focus_fallback_target(gboolean allow_refocus,
}
ObClient* focus_fallback(gboolean allow_refocus, gboolean allow_pointer,
- gboolean allow_omnipresent)
+ gboolean allow_omnipresent, gboolean focus_lost)
{
ObClient *new;
ObClient *old = focus_client;
@@ -167,7 +167,8 @@ ObClient* focus_fallback(gboolean allow_refocus, gboolean allow_pointer,
/* 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 (focus_lost)
+ focus_nothing();
new = focus_fallback_target(allow_refocus, allow_pointer,
allow_omnipresent, old);