forked from enlightenment/efl
elm_transit: Add elm_transit_go_in() API
Summary: elm_transit_go() is executed immediately after it is called. elm_transit_go_in() starts transit in given seconds. @feature Reviewers: Hermet, seoz Reviewed By: seoz Subscribers: seoz, Hermet Differential Revision: https://phab.enlightenment.org/D1954
This commit is contained in:
parent
684013d25e
commit
f4bf91f7c7
|
@ -30,6 +30,7 @@ struct _Elm_Transit
|
|||
EINA_MAGIC;
|
||||
|
||||
Ecore_Animator *animator;
|
||||
Ecore_Timer *timer; /**< Timer used by elm_transit_go_in() */
|
||||
Eina_Inlist *effect_list;
|
||||
Eina_List *objs;
|
||||
Elm_Transit *prev_chain_transit;
|
||||
|
@ -266,6 +267,8 @@ _transit_del(Elm_Transit *transit)
|
|||
if (transit->del_data.func)
|
||||
transit->del_data.func(transit->del_data.arg, transit);
|
||||
|
||||
ecore_timer_del(transit->timer);
|
||||
|
||||
//cut off the chain transit relationship
|
||||
EINA_LIST_FOREACH_SAFE(transit->next_chain_transits, elist, elist_next, chain_transit)
|
||||
chain_transit->prev_chain_transit = NULL;
|
||||
|
@ -460,6 +463,17 @@ _recover_image_uv(Evas_Object *obj, Evas_Map *map, Eina_Bool revert, Eina_Bool b
|
|||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_transit_go_in_cb(void *data)
|
||||
{
|
||||
Elm_Transit *transit = data;
|
||||
|
||||
transit->timer = NULL;
|
||||
elm_transit_go(transit);
|
||||
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
EAPI Elm_Transit *
|
||||
elm_transit_add(void)
|
||||
{
|
||||
|
@ -724,6 +738,8 @@ elm_transit_go(Elm_Transit *transit)
|
|||
{
|
||||
ELM_TRANSIT_CHECK_OR_RETURN(transit);
|
||||
|
||||
ELM_SAFE_FREE(transit->timer, ecore_timer_del);
|
||||
|
||||
Eina_List *elist;
|
||||
Evas_Object *obj;
|
||||
|
||||
|
@ -746,6 +762,15 @@ elm_transit_go(Elm_Transit *transit)
|
|||
_transit_animate_cb(transit);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_transit_go_in(Elm_Transit *transit, double in)
|
||||
{
|
||||
ELM_TRANSIT_CHECK_OR_RETURN(transit);
|
||||
|
||||
if (transit->timer) ecore_timer_del(transit->timer);
|
||||
transit->timer = ecore_timer_add(in, _transit_go_in_cb, transit);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_transit_paused_set(Elm_Transit *transit, Eina_Bool paused)
|
||||
{
|
||||
|
|
|
@ -578,6 +578,19 @@ EAPI double elm_transit_duration_get(const Elm_Transit *transit)
|
|||
*/
|
||||
EAPI void elm_transit_go(Elm_Transit *transit);
|
||||
|
||||
/**
|
||||
* Starts the transition in given seconds.
|
||||
*
|
||||
* @note @p transit can not be NULL
|
||||
*
|
||||
* @param transit The transit object.
|
||||
* @param in The interval value in seconds
|
||||
*
|
||||
* @since 1.14
|
||||
* @ingroup Transit
|
||||
*/
|
||||
EAPI void elm_transit_go_in(Elm_Transit *transit, double in);
|
||||
|
||||
/**
|
||||
* Pause/Resume the transition.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue