e_client: refactor e_client_revert_focus function 39/296739/2
authorJunseok Kim <juns.kim@samsung.com>
Thu, 3 Aug 2023 11:26:50 +0000 (20:26 +0900)
committerJunSeok Kim <juns.kim@samsung.com>
Fri, 4 Aug 2023 00:36:31 +0000 (00:36 +0000)
Change-Id: I3f2f35e37cf96c2486e4d4a4c47cd5cf8ce220a4

src/bin/e_client.c

index c1a5db5..bb1a02a 100644 (file)
@@ -1070,36 +1070,40 @@ e_client_revert_focus(E_Client *ec)
    if (e_config->focus_policy_ext == E_FOCUS_EXT_TOP_STACK)
      {
         focus_ec = _e_client_focus_topmost_focusable_get();
-        if (focus_ec && (focus_ec != focused) &&
-            (!focus_ec->iconic || focus_ec->exp_iconify.buffer_flush))
+        if (focused == focus_ec) return;
+
+        if (focus_ec)
           {
-             ELOGF("FOCUS", "focus set   | topmost_focus", focus_ec);
-             if (focused) e_client_frame_focus_set(focused, EINA_FALSE);
-             e_client_frame_focus_set(focus_ec, EINA_TRUE);
+             if (!focus_ec->iconic || focus_ec->exp_iconify.buffer_flush)
+               {
+                  ELOGF("FOCUS", "focus set   | topmost_focus", focus_ec);
+                  if (focused) e_client_frame_focus_set(focused, EINA_FALSE);
+                  e_client_frame_focus_set(focus_ec, EINA_TRUE);
+               }
           }
-        else if (focused && (focus_ec == NULL))
+        else
           {
              ELOGF("FOCUS", "focus unset | No focusable ec", focused);
              e_client_frame_focus_set(focused, EINA_FALSE);
           }
+
         return;
      }
 
    focus_ec = _e_client_revert_focus_get(ec);
+   if (!focus_ec) return;
 
-   if (focus_ec)
+   if (focus_ec != ec)
      {
-        if (focus_ec != ec)
-          {
-             e_client_focus_defer_unset(ec);
-             ELOGF("FOCUS", "focus unset | revert_focus", ec);
-             e_client_frame_focus_set(ec, EINA_FALSE);
-          }
-        if (!focus_ec->iconic || focus_ec->exp_iconify.buffer_flush)
-          {
-             ELOGF("FOCUS", "focus set   | revert_focus", focus_ec);
-             e_client_frame_focus_set(focus_ec, EINA_TRUE);
-          }
+        e_client_focus_defer_unset(ec);
+        ELOGF("FOCUS", "focus unset | revert_focus", ec);
+        e_client_frame_focus_set(ec, EINA_FALSE);
+     }
+
+   if (!focus_ec->iconic || focus_ec->exp_iconify.buffer_flush)
+     {
+        ELOGF("FOCUS", "focus set   | revert_focus", focus_ec);
+        e_client_frame_focus_set(focus_ec, EINA_TRUE);
      }
 }