forked from enlightenment/enlightenment
fix focus_revert_on_hide_or_close option to work correctly with mouse focus, also fix annoying pointer warp focus bug which erroneously focused windows while moving the pointer for pointer_slide warps on new windows
SVN revision: 80174
This commit is contained in:
parent
3bd8f4dd81
commit
17c9b707d5
|
@ -1047,22 +1047,15 @@ e_border_hide(E_Border *bd,
|
||||||
e_border_focus_set(bd->parent, 1, 1);
|
e_border_focus_set(bd->parent, 1, 1);
|
||||||
else if (e_config->focus_revert_on_hide_or_close)
|
else if (e_config->focus_revert_on_hide_or_close)
|
||||||
{
|
{
|
||||||
/* When using pointer focus, the border under the
|
e_desk_last_focused_focus(desk);
|
||||||
* pointer (if any) gets focused, in sloppy/click
|
if ((pbd = eina_list_data_get(focus_next)))
|
||||||
* focus the last focused window on the current
|
e_border_pointer_warp_to_center(pbd);
|
||||||
* desk gets focus */
|
}
|
||||||
if (e_config->focus_policy == E_FOCUS_MOUSE)
|
else if (e_config->focus_policy == E_FOCUS_MOUSE)
|
||||||
{
|
{
|
||||||
pbd = e_border_under_pointer_get(desk, bd);
|
pbd = e_border_under_pointer_get(desk, bd);
|
||||||
if (pbd)
|
if (pbd)
|
||||||
e_border_focus_set(pbd, 1, 1);
|
e_border_focus_set(pbd, 1, 1);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
e_desk_last_focused_focus(desk);
|
|
||||||
if ((pbd = eina_list_data_get(focus_next)))
|
|
||||||
e_border_pointer_warp_to_center(pbd);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4470,6 +4463,7 @@ _e_border_reset_lost_window(E_Border *bd)
|
||||||
e_border_focus_set(bd, 1, 1);
|
e_border_focus_set(bd, 1, 1);
|
||||||
|
|
||||||
bd->during_lost = EINA_FALSE;
|
bd->during_lost = EINA_FALSE;
|
||||||
|
e_border_focus_lock_set(EINA_TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
@ -9910,6 +9904,7 @@ _e_border_pointer_warp_to_center_timer(void *data __UNUSED__)
|
||||||
cleanup:
|
cleanup:
|
||||||
ecore_timer_del(warp_timer);
|
ecore_timer_del(warp_timer);
|
||||||
warp_timer = NULL;
|
warp_timer = NULL;
|
||||||
|
e_border_focus_lock_set(EINA_FALSE);
|
||||||
return ECORE_CALLBACK_CANCEL;
|
return ECORE_CALLBACK_CANCEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9945,6 +9940,7 @@ e_border_pointer_warp_to_center(E_Border *bd)
|
||||||
ecore_x_pointer_xy_get(bd->zone->container->win, &warp_x, &warp_y);
|
ecore_x_pointer_xy_get(bd->zone->container->win, &warp_x, &warp_y);
|
||||||
if (warp_timer) ecore_timer_del(warp_timer);
|
if (warp_timer) ecore_timer_del(warp_timer);
|
||||||
warp_timer = ecore_timer_add(0.01, _e_border_pointer_warp_to_center_timer, (const void *)bd);
|
warp_timer = ecore_timer_add(0.01, _e_border_pointer_warp_to_center_timer, (const void *)bd);
|
||||||
|
e_border_focus_lock_set(EINA_TRUE);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue