diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-03-12 02:34:34 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-03-12 02:34:34 +0000 |
| commit | d113b9f33fb7031add7026d123f34b31888d7411 (patch) | |
| tree | 106655c2eeaf08628644891ce9d8c11c43d4ac19 /openbox | |
| parent | 2244bc036a9c96704675318dc382ea3abd6f3fdf (diff) | |
ok this is from prevous changes but has a bunch of debug stuff in it
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/focus.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/openbox/focus.c b/openbox/focus.c index a84d253a..7b40db5e 100644 --- a/openbox/focus.c +++ b/openbox/focus.c @@ -256,18 +256,10 @@ ObClient* focus_fallback_target(ObFocusFallbackType type, ObClient *old) if (!config_focus_follow || config_focus_last) trans = TRUE; - else { - if ((target = client_under_pointer())) { - GSList *sit; - - sit = client_search_top_transients(target); - for (; sit; sit = g_slist_next(sit)) - if (client_search_transient(sit->data, old)) { - trans = TRUE; - break; - } - } - } + else if ((target = client_under_pointer()) && + (client_search_transient + (client_search_top_parent(target), old))) + trans = TRUE; /* try for transient relations */ if (trans) { @@ -283,24 +275,33 @@ ObClient* focus_fallback_target(ObFocusFallbackType type, ObClient *old) if (sit->data == it->data) if ((target = focus_fallback_transient(sit->data, old))) + { + ob_debug("found in transient #1\n"); return target; + } } } } else { if ((target = focus_fallback_transient(old->transient_for, old))) + { + ob_debug("found in transient #2\n"); return target; + } } } } } + ob_debug("trying pointer stuff\n"); if (config_focus_follow && (type == OB_FOCUS_FALLBACK_UNFOCUSING || !config_focus_last)) { if ((target = client_under_pointer())) - if (client_normal(target) && client_can_focus(target)) + if (client_normal(target) && client_can_focus(target)) { + ob_debug("found in pointer stuff\n"); return target; + } } #if 0 @@ -317,10 +318,13 @@ ObClient* focus_fallback_target(ObFocusFallbackType type, ObClient *old) } #endif + ob_debug("trying the focus order\n"); for (it = focus_order[screen_desktop]; it; it = g_list_next(it)) if (type != OB_FOCUS_FALLBACK_UNFOCUSING || it->data != old) - if (client_normal(it->data) && client_can_focus(it->data)) + if (client_normal(it->data) && client_can_focus(it->data)) { + ob_debug("found in focus order\n"); return it->data; + } /* XXX fallback to the "desktop window" if one exists ? could store it while going through all the windows in the loop right |
