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);
|
focus_set_client(NULL);
|
||||||
|
|
||||||
if (!config_focus_last && config_focus_follow)
|
|
||||||
if (focus_under_pointer())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) {
|
if (type == OB_FOCUS_FALLBACK_UNFOCUSING && old) {
|
||||||
/* try for transient relations */
|
/* try for transient relations */
|
||||||
if (old->transient_for) {
|
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
|
#if 0
|
||||||
/* try for group relations */
|
/* try for group relations */
|
||||||
if (old->group) {
|
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
|
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
|
if the focus flags on the window allow it, and its on the current
|
||||||
desktop */
|
desktop */
|
||||||
return (ft->transients == NULL && client_normal(ft) &&
|
return (ft == client_focus_target(ft) && client_normal(ft) &&
|
||||||
((ft->can_focus || ft->focus_notify) &&
|
((ft->can_focus || ft->focus_notify) &&
|
||||||
!ft->skip_taskbar &&
|
!ft->skip_taskbar &&
|
||||||
(ft->desktop == screen_desktop || ft->desktop == DESKTOP_ALL)));
|
(ft->desktop == screen_desktop || ft->desktop == DESKTOP_ALL)));
|
||||||
|
@ -324,7 +324,6 @@ void focus_cycle(gboolean forward, gboolean linear,
|
||||||
it = it->prev;
|
it = it->prev;
|
||||||
if (it == NULL) it = g_list_last(list);
|
if (it == NULL) it = g_list_last(list);
|
||||||
}
|
}
|
||||||
/*ft = client_focus_target(it->data);*/
|
|
||||||
ft = it->data;
|
ft = it->data;
|
||||||
if (valid_focus_target(ft)) {
|
if (valid_focus_target(ft)) {
|
||||||
if (ft != focus_cycle_target) { /* prevents flicker */
|
if (ft != focus_cycle_target) { /* prevents flicker */
|
||||||
|
|
Loading…
Reference in a new issue