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 e1b942a0bd4169cb10c219f2e4cf3144dd5841ab..a89898a122cde11ef8c516fa82dad2476987c172 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 9d0a412d2bae7dbc6d98e8a6d7b0e973cf709686..bb6f44c011f5f0c7a996f692195acea33f8cd266 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 c2b94e3715389af936806772c5c477996e417de6..df13dade844c1d3b12f992a434b7cc264b164842 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 6ab936d5df4458ff9effd8b5922a7e73b4ca9a1a..f0e63553d6adb3e6fcc622aa9305e4d3769cb92c 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