check uniconify_render_running before uniconify window while handling focus 08/184008/1
authorDoyoun Kang <doyoun.kang@samsung.com>
Wed, 2 May 2018 00:14:45 +0000 (09:14 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Fri, 13 Jul 2018 04:36:22 +0000 (13:36 +0900)
there is a bug that the window which is running uniconify_render is uniconified while handling focus.
for this, enlightenment tries to render it continuously

Change-Id: I621047817ab3589480ebe493c2ecd19bcf3fa2a2

src/bin/e_comp_object.c
src/bin/e_policy_visibility.c
src/bin/e_policy_visibility.h

index 812b11e7d72ae11f495637b996bb19447bd7d5a2..ae817b1f5c0dd485740033c011c6c9e9753c989b 100644 (file)
@@ -2234,11 +2234,14 @@ _e_comp_intercept_focus(void *data, Evas_Object *obj, Eina_Bool focus)
           }
         if ((ec->iconic) && (!ec->deskshow))
           {
-             /* don't focus an iconified window. that's silly! */
-             e_client_uniconify(ec);
-             if (e_client_focus_track_enabled())
-               e_client_focus_latest_set(ec);
-             return;
+             if (!e_policy_visibility_client_is_uniconify_render_running(ec))
+               {
+                  /* don't focus an iconified window. that's silly! */
+                  e_client_uniconify(ec);
+                  if (e_client_focus_track_enabled())
+                    e_client_focus_latest_set(ec);
+                  return;
+               }
           }
         if (!ec->visible)
           {
index 4fdad56a86e70b1018bf7c804f82c357c89d2de0..167322973b2f596be0a5faea8253e913c800e267 100644 (file)
@@ -2121,6 +2121,14 @@ e_policy_visibility_client_is_iconic(E_Client *ec)
    return _e_vis_client_is_iconic(vc);
 }
 
+E_API Eina_Bool
+e_policy_visibility_client_is_uniconify_render_running(E_Client *ec)
+{
+   E_VIS_CLIENT_GET_OR_RETURN_VAL(vc, ec, EINA_FALSE);
+
+   return _e_vis_client_is_uniconify_render_running(vc);
+}
+
 E_API E_Pol_Vis_Hook *
 e_policy_visibility_hook_add(E_Pol_Vis_Hook_Type type, E_Pol_Vis_Hook_Cb cb, const void *data)
 {
index c13427c08792353ce127d6389c6ccd78cc720784..96c9961f4bd057b571fd62d4d1cb06d3cb4aebd8 100644 (file)
@@ -34,6 +34,7 @@ E_API Eina_Bool                   e_policy_visibility_client_hide_job_cancel(E_C
 E_API E_Pol_Vis_Hook             *e_policy_visibility_hook_add(E_Pol_Vis_Hook_Type type, E_Pol_Vis_Hook_Cb cb, const void *data);
 E_API void                        e_policy_visibility_hook_del(E_Pol_Vis_Hook *h);
 E_API Eina_Bool                   e_policy_visibility_client_is_iconic(E_Client *ec);
+E_API Eina_Bool                   e_policy_visibility_client_is_uniconify_render_running(E_Client *ec);
 
 EINTERN void                      e_policy_visibility_client_defer_move(E_Client *ec);
 EINTERN void                      e_vis_client_send_pre_visibility_event(E_Client *ec);