From cef16270caf73e44757a74a9f864b06b56aa6419 Mon Sep 17 00:00:00 2001 From: mike_m Date: Tue, 11 Oct 2011 06:27:30 +0000 Subject: [PATCH] elementary: Add elm_pager_animation_disable_set Signed-off-by: Shilpa Singh Signed-off-by: Mike McCormack git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@63981 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/Elementary.h.in | 8 ++++++++ src/lib/elm_pager.c | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 612e167..c3a0730 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -19731,6 +19731,14 @@ extern "C" { */ EAPI Evas_Object *elm_pager_content_top_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** + * @brief Enable or disable pager animations + * + * @param obj The pager object + * @param disable True if the animation should be disabled + */ + EAPI void elm_pager_animation_disabled_set(Evas_Object *obj, Eina_Bool disable); EINA_ARG_NONNULL(1); + + /** * @} */ diff --git a/src/lib/elm_pager.c b/src/lib/elm_pager.c index 08cf733..742616e 100644 --- a/src/lib/elm_pager.c +++ b/src/lib/elm_pager.c @@ -9,6 +9,7 @@ struct _Widget_Data Eina_List *stack; Item *top, *oldtop; Evas_Object *rect, *clip; + Eina_Bool disable_animation: 1; }; struct _Item @@ -144,6 +145,7 @@ static void _eval_top(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + Eina_Bool show_noanimate = EINA_TRUE; Item *ittop; if (!wd) return; if (!wd->stack) return; @@ -156,7 +158,13 @@ _eval_top(Evas_Object *obj) if (wd->top) { o = wd->top->base; - if (wd->top->popme) + if(wd->disable_animation) + { + edje_object_signal_emit(o, "elm,action,hide,noanimate", "elm"); + if (wd->top->popme) + wd->stack = eina_list_remove(wd->stack, wd->top); + } + else if (wd->top->popme) { edje_object_signal_emit(o, "elm,action,pop", "elm"); wd->stack = eina_list_remove(wd->stack, wd->top); @@ -170,11 +178,19 @@ _eval_top(Evas_Object *obj) else if (!strcmp(onhide, "lower")) evas_object_lower(o); } } + else + { + show_noanimate = EINA_FALSE; + } wd->oldtop = wd->top; wd->top = ittop; o = wd->top->base; evas_object_show(o); - if (wd->oldtop) + if ((!show_noanimate)||(wd->disable_animation)) + { + edje_object_signal_emit(o, "elm,action,show,noanimate", "elm"); + } + else if (wd->oldtop) { if (elm_object_focus_get(wd->oldtop->content)) elm_widget_focused_object_clear(wd->oldtop->content); @@ -434,3 +450,18 @@ elm_pager_content_top_get(const Evas_Object *obj) return wd->top->content; } +/** + * This disables content animation on push/pop. + * + * @param obj The pager object + * @param disable if EINA_TRUE animation is disabled. + * + * @ingroup Pager + */ +EAPI void +elm_pager_animation_disabled_set(Evas_Object *obj, Eina_Bool disable) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + wd->disable_animation = disable; +} -- 2.7.4