focus: revert focus after rendering below window
authorDoyoun Kang <doyoun.kang@samsung.com>
Sun, 20 Aug 2017 09:06:42 +0000 (18:06 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Wed, 20 Sep 2017 04:31:34 +0000 (13:31 +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 a75fdeb64b6a13068b7cf3498a13713e75ea6fdd..0ff3f14811858993441dfb1b5f89e910e8e9db1e 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 7149940e10c61c322cd3b1788cbfc1e2e58d90a5..70aa4df2410187c18d95c4e4c95b160ec3fba8d8 100644 (file)
@@ -1151,7 +1151,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 684cbaea418ced5d49f8d65b41f72fdc33894545..80f2d8dd677cf2457f591bcc181206dedeeb347d 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