fix focusing client on mouse events which trigger actions (with exceptions)

block focus events only if focus has changed to another client or the current
client's layer-actual has been lowered

regression from 719b2baeba
This commit is contained in:
Mike Blumenkrantz 2015-05-21 12:31:00 -04:00
parent 28e0c783b3
commit e70fcc565d
1 changed files with 5 additions and 1 deletions

View File

@ -2772,6 +2772,8 @@ E_API void
e_client_mouse_down(E_Client *ec, int button, Evas_Point *output, E_Binding_Event_Mouse_Button *ev)
{
Eina_Bool did_act = EINA_FALSE;
E_Client *pfocus;
int player;
EINA_SAFETY_ON_NULL_RETURN(ec);
if (action_client || ec->iconic || e_client_util_ignored_get(ec)) return;
@ -2793,6 +2795,8 @@ e_client_mouse_down(E_Client *ec, int button, Evas_Point *output, E_Binding_Even
}
ec->mouse.current.mx = output->x;
ec->mouse.current.my = output->y;
pfocus = e_client_focused_get();
player = ec->layer;
if (!ec->cur_mouse_action)
{
ec->cur_mouse_action =
@ -2808,7 +2812,7 @@ e_client_mouse_down(E_Client *ec, int button, Evas_Point *output, E_Binding_Even
e_object_ref(E_OBJECT(ec->cur_mouse_action));
}
}
if (!did_act)
if ((!did_act) || (((pfocus == e_client_focused_get()) || (ec == e_client_focused_get())) && (ec->layer >= player)))
e_focus_event_mouse_down(ec);
if ((button >= 1) && (button <= 3))
{