focus: revert focus after rendering below window 86/144986/2
authorDoyoun Kang <doyoun.kang@samsung.com>
Sun, 20 Aug 2017 09:06:42 +0000 (18:06 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Mon, 21 Aug 2017 00:54:24 +0000 (09:54 +0900)
When the window was lowered, focus was changed slowly because it handled after finishing effect.
So, we changed code to change focus when the below window of lowered window was committed.

Change-Id: Iaeab8b5f77d413a422f1cfd8974903bd4a55bca0

src/bin/e_client.c
src/bin/e_client.h
src/bin/e_policy_visibility.c
src/bin/e_policy_wl.c

index e1b942a..a89898a 100644 (file)
@@ -874,6 +874,12 @@ _e_client_revert_focus(E_Client *ec)
      }
 }
 
+EINTERN void
+e_client_revert_focus(E_Client *ec)
+{
+   _e_client_revert_focus(ec);
+}
+
 static void
 _e_client_free(E_Client *ec)
 {
index 9d0a412..bb6f44c 100644 (file)
@@ -1121,6 +1121,8 @@ E_API void e_client_visibility_force_obscured_set(E_Client *ec, Eina_Bool set);
 
 E_API void e_client_stay_within_canvas_margin(E_Client *ec);
 
+EINTERN void e_client_revert_focus(E_Client *ec);
+
 /**
  * Move window to coordinates that do not account client decorations yet.
  *
index c2b94e3..df13dad 100644 (file)
@@ -1160,7 +1160,12 @@ _e_vis_ec_job_exec(E_Client *ec, E_Vis_Job_Type type)
          break;
       case E_VIS_JOB_TYPE_LOWER:
          e_comp_canvas_norender_pop();
-         if (ec) evas_object_lower(ec->frame);
+         if (ec)
+           {
+              evas_object_lower(ec->frame);
+              if (ec->focused)
+                e_client_revert_focus(ec);
+           }
          break;
       case E_VIS_JOB_TYPE_HIDE:
          e_comp_canvas_norender_pop();
index 6ab936d..f0e6355 100644 (file)
@@ -1600,6 +1600,9 @@ _tzpol_iface_cb_lower(struct wl_client *client EINA_UNUSED, struct wl_resource *
 
    if (!e_client_first_mapped_get(ec))
      e_client_post_raise_lower_set(ec, EINA_FALSE, EINA_TRUE);
+
+   if (ec->focused)
+     e_client_revert_focus(ec);
 }
 
 static void