From 42c3636416ad2c236dc4711f1851b9f5fbcb311e Mon Sep 17 00:00:00 2001 From: raster Date: Thu, 13 Oct 2011 10:27:12 +0000 Subject: [PATCH] revert herments revert 64043!!!!!! BAD HERMET! git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@64050 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/Elementary.h.in | 7 +++++++ src/lib/elm_pager.c | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index cff69a1..b8f2a8a 100644 --- a/src/lib/Elementary.h.in +++ b/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/src/lib/elm_pager.c b/src/lib/elm_pager.c index 6107ccb..802a77b 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); @@ -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; +} -- 2.7.4