discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=235980159fed276d386b3efd7f0bad55e75d9661

commit 235980159fed276d386b3efd7f0bad55e75d9661
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Wed Jul 1 15:51:46 2015 -0400

    ensure x11 focus grabs are applied on client init when needed
---
 src/bin/e_comp_x.c | 38 +++++++++++++++++++++++++-------------
 1 file changed, 25 insertions(+), 13 deletions(-)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index f9c473b..b1ac4c9 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -176,12 +176,8 @@ _e_comp_x_print_win(Ecore_X_Window win)
 }
 
 static void
-_e_comp_x_focus_setup(E_Client *ec)
+_e_comp_x_focus_grab(E_Client *ec)
 {
-   if (_e_comp_x_client_data_get(ec)->button_grabbed) return;
-   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_win_get(ec), 1,
                               ECORE_X_EVENT_MASK_MOUSE_DOWN |
                               ECORE_X_EVENT_MASK_MOUSE_UP |
@@ -197,6 +193,26 @@ _e_comp_x_focus_setup(E_Client *ec)
    _e_comp_x_client_data_get(ec)->button_grabbed = 1;
 }
 
+static void
+_e_comp_x_focus_init(E_Client *ec)
+{
+   if (_e_comp_x_client_data_get(ec)->button_grabbed) return;
+   if (!((e_client_focus_policy_click(ec)) ||
+       (e_config->always_click_to_raise) ||
+       (e_config->always_click_to_focus))) return;
+   _e_comp_x_focus_grab(ec);
+}
+
+static void
+_e_comp_x_focus_setup(E_Client *ec)
+{
+   if (_e_comp_x_client_data_get(ec)->button_grabbed) return;
+   if ((!e_client_focus_policy_click(ec)) ||
+       (e_config->always_click_to_raise) ||
+       (e_config->always_click_to_focus)) return;
+   _e_comp_x_focus_grab(ec);
+}
+
 
 static void
 _e_comp_x_focus_setdown(E_Client *ec)
@@ -2905,14 +2921,9 @@ _e_comp_x_hook_client_pre_frame_assign(void *d 
EINA_UNUSED, E_Client *ec)
         ecore_x_window_show(pwin);
      }
 
-   if (ec->focused)
-     _e_comp_x_focus_setdown(ec);
-   else
-     {
-        _e_comp_x_focus_setup(ec);
-        e_bindings_mouse_grab(E_BINDING_CONTEXT_WINDOW, win);
-        e_bindings_wheel_grab(E_BINDING_CONTEXT_WINDOW, win);
-     }
+   _e_comp_x_focus_init(ec);
+   e_bindings_mouse_grab(E_BINDING_CONTEXT_WINDOW, win);
+   e_bindings_wheel_grab(E_BINDING_CONTEXT_WINDOW, win);
    _e_comp_x_client_evas_init(ec);
    if (ec->netwm.ping && (!ec->ping_poller))
      e_client_ping(ec);
@@ -4922,6 +4933,7 @@ _e_comp_x_bindings_grab_cb(void)
    EINA_LIST_FOREACH(e_comp->clients, l, ec)
      {
         if (e_client_util_ignored_get(ec)) continue;
+        _e_comp_x_focus_init(ec);
         if (ec->focused)
           _e_comp_x_focus_setdown(ec);
         else

-- 


Reply via email to