ensure that focus is set and focus stack is managed on winlist hide
authorMike Blumenkrantz <zmike@osg.samsung.com>
Wed, 15 Jul 2015 18:47:35 +0000 (14:47 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Wed, 15 Jul 2015 18:47:35 +0000 (14:47 -0400)
if pointer warping is disabled, attempting to pointer warp with mouse-based
focus policies will fail here, preventing focus from being applied as expected

ref T2566

src/modules/winlist/e_winlist.c

index 730c909..b459400 100644 (file)
@@ -277,6 +277,8 @@ e_winlist_hide(void)
      e_comp_ungrab_input(1, 1);
    if (ec)
      {
+        Eina_Bool set = !ec->lock_focus_out;
+
         if (ec->shaded)
           {
              if (!ec->lock_user_shade)
@@ -304,9 +306,9 @@ e_winlist_hide(void)
             (e_config->winlist_warp_at_end) ||
             (e_config->winlist_warp_while_selecting))
           {
-             e_client_pointer_warp_to_center_now(ec);
+             set |= !e_client_pointer_warp_to_center_now(ec);
           }
-        else if (!ec->lock_focus_out)
+        if (set)
           {
              evas_object_focus_set(ec->frame, 1);
              e_client_focus_latest_set(ec);