smarter picking valid focus cycle targets
This commit is contained in:
parent
d5a1b96802
commit
49b848a2bb
1 changed files with 5 additions and 6 deletions
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue