force-disable refocus during desk flip on client activation
authorMike Blumenkrantz <zmike@osg.samsung.com>
Tue, 8 Sep 2015 20:55:21 +0000 (16:55 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Tue, 8 Sep 2015 20:55:21 +0000 (16:55 -0400)
this prevents an infinite focus loop where focus will be constantly
reapplied between multiple windows if the activated window is not the
refocus window

src/bin/e_client.c

index e6788ef..8e64150 100644 (file)
@@ -3567,7 +3567,15 @@ e_client_activate(E_Client *ec, Eina_Bool just_do_it)
                e_client_uniconify(ec);
           }
         if ((!ec->iconic) && (!ec->sticky))
-          e_desk_show(ec->desk);
+          {
+             int val = e_config->focus_last_focused_per_desktop;
+
+             /* prevent infinite focus loops during refocus */
+             if (!ec->lock_focus_out)
+               e_config->focus_last_focused_per_desktop = 0;
+             e_desk_show(ec->desk);
+             e_config->focus_last_focused_per_desktop = val;
+          }
         if (!ec->lock_user_stacking)
           evas_object_raise(ec->frame);
         if (!ec->lock_focus_out)