From: Carsten Haitzler (Rasterman) Date: Sun, 28 Jun 2015 08:24:29 +0000 (+0900) Subject: e passive window grabs - fix side-effect leave/enter events on clients X-Git-Tag: upstream/0.20.0~705 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=afb62b498997ca038687c0cd0ca97aa361aaa1b7;p=platform%2Fupstream%2Fenlightenment.git 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 --- diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 53e5199..90c307d 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -181,16 +181,15 @@ _e_comp_x_focus_setup(E_Client *ec) if (!((e_client_focus_policy_click(ec)) || (e_config->always_click_to_raise) || (e_config->always_click_to_focus))) return; - - ecore_x_window_button_grab(_e_comp_x_client_util_pwin_get(ec), 1, + ecore_x_window_button_grab(_e_comp_x_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_comp_x_client_util_pwin_get(ec), 2, + ecore_x_window_button_grab(_e_comp_x_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_comp_x_client_util_pwin_get(ec), 3, + ecore_x_window_button_grab(_e_comp_x_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); diff --git a/src/bin/e_focus.c b/src/bin/e_focus.c index c1e5e6d..fc4cfbc 100644 --- a/src/bin/e_focus.c +++ b/src/bin/e_focus.c @@ -71,9 +71,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)); @@ -90,15 +90,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);