From e429abd9d759c72f8029727c1f2b5415aa07d07d Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 13 Oct 2011 10:27:12 +0000 Subject: [PATCH] revert herments revert 64043!!!!!! BAD HERMET! SVN revision: 64050 --- legacy/elementary/src/lib/Elementary.h.in | 7 +++++ legacy/elementary/src/lib/elm_pager.c | 36 +++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index cff69a14db..b8f2a8ae17 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -19708,6 +19708,13 @@ extern "C" { * @return The top object or NULL if none */ 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/legacy/elementary/src/lib/elm_pager.c b/legacy/elementary/src/lib/elm_pager.c index 6107ccb24b..802a77ba9e 100644 --- a/legacy/elementary/src/lib/elm_pager.c +++ b/legacy/elementary/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); @@ -433,3 +449,19 @@ elm_pager_content_top_get(const Evas_Object *obj) if (!wd->top) return NULL; 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; +}