return ECORE_CALLBACK_PASS_ON;
}
+static Eina_Bool
+_launcher_handler_cb_event_client_visibility_change(void *data, int type EINA_UNUSED, void *event)
+{
+ E_Service_Launcher *pre_runner;
+ E_Client *ec;
+ E_Event_Client *ev;
+
+ ev = (E_Event_Client *)event;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ev, ECORE_CALLBACK_PASS_ON);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ev->ec, ECORE_CALLBACK_PASS_ON);
+
+ ec = ev->ec;
+ if (ec->visibility.obscured != E_VISIBILITY_UNOBSCURED)
+ return ECORE_CALLBACK_PASS_ON;
+
+ pre_runner = _launcher_handler_launcher_pre_runner_get();
+ if (pre_runner)
+ {
+ switch (pre_runner->state)
+ {
+ case LAUNCHER_STATE_DONE:
+ case LAUNCHER_STATE_CANCELED:
+ if (pre_runner->launched_ec)
+ {
+ if (pre_runner->launched_ec == ec)
+ {
+ e_policy_animatable_lock(pre_runner->launched_ec, E_POLICY_ANIMATABLE_CUSTOMIZED, 0);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
#undef LAUNCHER_HANDLER_CB_ADD
#define LAUNCHER_HANDLER_CB_ADD(l, appender, event_type, cb, data) \
do \
E_EVENT_CLIENT_SHOW,
_launcher_handler_cb_event_client_show, NULL);
+ LAUNCHER_HANDLER_CB_ADD(laundler->hdlrs_ev,
+ ecore_event_handler_add,
+ E_EVENT_CLIENT_VISIBILITY_CHANGE,
+ _launcher_handler_cb_event_client_visibility_change, NULL);
+
ELOGF("LAUNCHER_SRV", "new launcher handler(%p) created", NULL, laundler);
return laundler;