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);
}
}