forked from enlightenment/enlightenment
e passive window grabs - fix side-effect leave/enter events on clients
when you have click to focus we have a passive grab set up. somewhere that window changed to the parent window instead of the client. this leads to a side effect of a leave and enter event on clients for every click. generally clients are ok with this, but some seem to have buggy event handling. these enter/leave events are a side effect of the passive grab even though we allow/replay the event. this fixes that by placing passive grabs on the client window itself instead of the parent. @fix
This commit is contained in:
parent
5182693d8d
commit
d7f384f092
|
@ -124,15 +124,15 @@ _e_comp_x_focus_setup(E_Client *ec)
|
|||
(e_config->always_click_to_raise) ||
|
||||
(e_config->always_click_to_focus))) return;
|
||||
|
||||
ecore_x_window_button_grab(e_client_util_pwin_get(ec), 1,
|
||||
ecore_x_window_button_grab(e_client_util_win_get(ec), 1,
|
||||
ECORE_X_EVENT_MASK_MOUSE_DOWN |
|
||||
ECORE_X_EVENT_MASK_MOUSE_UP |
|
||||
ECORE_X_EVENT_MASK_MOUSE_MOVE, 0, 1);
|
||||
ecore_x_window_button_grab(e_client_util_pwin_get(ec), 2,
|
||||
ecore_x_window_button_grab(e_client_util_win_get(ec), 2,
|
||||
ECORE_X_EVENT_MASK_MOUSE_DOWN |
|
||||
ECORE_X_EVENT_MASK_MOUSE_UP |
|
||||
ECORE_X_EVENT_MASK_MOUSE_MOVE, 0, 1);
|
||||
ecore_x_window_button_grab(e_client_util_pwin_get(ec), 3,
|
||||
ecore_x_window_button_grab(e_client_util_win_get(ec), 3,
|
||||
ECORE_X_EVENT_MASK_MOUSE_DOWN |
|
||||
ECORE_X_EVENT_MASK_MOUSE_UP |
|
||||
ECORE_X_EVENT_MASK_MOUSE_MOVE, 0, 1);
|
||||
|
|
|
@ -70,9 +70,9 @@ e_focus_event_focus_in(E_Client *ec)
|
|||
e_bindings_mouse_ungrab(E_BINDING_CONTEXT_WINDOW, e_client_util_pwin_get(ec));
|
||||
e_bindings_wheel_ungrab(E_BINDING_CONTEXT_WINDOW, e_client_util_pwin_get(ec));
|
||||
#ifndef HAVE_WAYLAND_ONLY
|
||||
ecore_x_window_button_ungrab(e_client_util_pwin_get(ec), 1, 0, 1);
|
||||
ecore_x_window_button_ungrab(e_client_util_pwin_get(ec), 2, 0, 1);
|
||||
ecore_x_window_button_ungrab(e_client_util_pwin_get(ec), 3, 0, 1);
|
||||
ecore_x_window_button_ungrab(e_client_util_win_get(ec), 1, 0, 1);
|
||||
ecore_x_window_button_ungrab(e_client_util_win_get(ec), 2, 0, 1);
|
||||
ecore_x_window_button_ungrab(e_client_util_win_get(ec), 3, 0, 1);
|
||||
#endif
|
||||
e_bindings_mouse_grab(E_BINDING_CONTEXT_WINDOW, e_client_util_pwin_get(ec));
|
||||
e_bindings_wheel_grab(E_BINDING_CONTEXT_WINDOW, e_client_util_pwin_get(ec));
|
||||
|
@ -89,15 +89,15 @@ e_focus_event_focus_out(E_Client *ec)
|
|||
{
|
||||
if (ec->button_grabbed) return;
|
||||
#ifndef HAVE_WAYLAND_ONLY
|
||||
ecore_x_window_button_grab(e_client_util_pwin_get(ec), 1,
|
||||
ecore_x_window_button_grab(e_client_util_win_get(ec), 1,
|
||||
ECORE_X_EVENT_MASK_MOUSE_DOWN |
|
||||
ECORE_X_EVENT_MASK_MOUSE_UP |
|
||||
ECORE_X_EVENT_MASK_MOUSE_MOVE, 0, 1);
|
||||
ecore_x_window_button_grab(e_client_util_pwin_get(ec), 2,
|
||||
ecore_x_window_button_grab(e_client_util_win_get(ec), 2,
|
||||
ECORE_X_EVENT_MASK_MOUSE_DOWN |
|
||||
ECORE_X_EVENT_MASK_MOUSE_UP |
|
||||
ECORE_X_EVENT_MASK_MOUSE_MOVE, 0, 1);
|
||||
ecore_x_window_button_grab(e_client_util_pwin_get(ec), 3,
|
||||
ecore_x_window_button_grab(e_client_util_win_get(ec), 3,
|
||||
ECORE_X_EVENT_MASK_MOUSE_DOWN |
|
||||
ECORE_X_EVENT_MASK_MOUSE_UP |
|
||||
ECORE_X_EVENT_MASK_MOUSE_MOVE, 0, 1);
|
||||
|
|
Loading…
Reference in New Issue