summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-09-26 19:04:18 +0000
committerDana Jansens <danakj@orodu.net>2003-09-26 19:04:18 +0000
commit49b848a2bbb4c9c72888da94cd069e3562f9640b (patch)
treeabbf469e83288a0e2818f428cc2c40dc3ae597ac
parentd5a1b968028839924a7d8f67833ce35bf58cb0f5 (diff)
smarter picking valid focus cycle targets
-rw-r--r--openbox/focus.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/openbox/focus.c b/openbox/focus.c
index dd83061f..302c4fc4 100644
--- a/openbox/focus.c
+++ b/openbox/focus.c
@@ -179,10 +179,6 @@ void focus_fallback(ObFocusFallbackType type)
*/
focus_set_client(NULL);
- if (!config_focus_last && config_focus_follow)
- if (focus_under_pointer())
- return;
-
if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) {
/* try for transient relations */
if (old->transient_for) {
@@ -201,6 +197,10 @@ void focus_fallback(ObFocusFallbackType type)
}
}
+ if (!config_focus_last && config_focus_follow)
+ if (focus_under_pointer())
+ return;
+
#if 0
/* try for group relations */
if (old->group) {
@@ -276,7 +276,7 @@ static gboolean valid_focus_target(ObClient *ft)
focus an iconic window, but we want to be able to, so we just check
if the focus flags on the window allow it, and its on the current
desktop */
- return (ft->transients == NULL && client_normal(ft) &&
+ return (ft == client_focus_target(ft) && client_normal(ft) &&
((ft->can_focus || ft->focus_notify) &&
!ft->skip_taskbar &&
(ft->desktop == screen_desktop || ft->desktop == DESKTOP_ALL)));
@@ -324,7 +324,6 @@ void focus_cycle(gboolean forward, gboolean linear,
it = it->prev;
if (it == NULL) it = g_list_last(list);
}
- /*ft = client_focus_target(it->data);*/
ft = it->data;
if (valid_focus_target(ft)) {
if (ft != focus_cycle_target) { /* prevents flicker */