From 3f4c806c093f1b6838c9dfd8dc7a4bc8ddc8e1e3 Mon Sep 17 00:00:00 2001 From: cedric Date: Tue, 24 Jan 2012 14:48:51 +0000 Subject: [PATCH] edje: prevent filter from matching during a program run. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@67495 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- ChangeLog | 4 ++++ src/lib/edje_calc.c | 4 ++-- src/lib/edje_program.c | 11 ++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index d4ad3b8..7a862f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -299,3 +299,7 @@ 2012-01-23 Cedric Bail * Fix overridding group in edje_cc by fixing with the right index. + +2012-01-24 Cedric Bail + + * Filter should only be valid once all program affecting there part are done. diff --git a/src/lib/edje_calc.c b/src/lib/edje_calc.c index 213e266..582cc85 100644 --- a/src/lib/edje_calc.c +++ b/src/lib/edje_calc.c @@ -66,7 +66,7 @@ _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos, FLOAT_T break; case EDJE_TWEEN_MODE_DECELERATE: npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), - ECORE_POS_MAP_DECELERATE, + ECORE_POS_MAP_DECELERATE, 0.0, 0.0)); break; case EDJE_TWEEN_MODE_LINEAR: @@ -564,7 +564,7 @@ _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, doubl _edje_real_part_rel_to_apply(ed, ep, ep->param2); - if (ep->description_pos != 0.0) + if (ep->description_pos > FROM_DOUBLE(0.0)) ep->chosen_description = epd2; } diff --git a/src/lib/edje_program.c b/src/lib/edje_program.c index d80c7c9..f82c99d 100644 --- a/src/lib/edje_program.c +++ b/src/lib/edje_program.c @@ -531,7 +531,7 @@ _edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig, } if (rp->program) - _edje_program_end(ed, rp->program); + _edje_program_end(ed, rp->program); _edje_part_description_apply(ed, rp, rp->param1.description->state.name, rp->param1.description->state.value, @@ -570,7 +570,7 @@ _edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig, if (rp) { if (rp->program) - _edje_program_end(ed, rp->program); + _edje_program_end(ed, rp->program); _edje_part_description_apply(ed, rp, pr->state, pr->value, @@ -1170,7 +1170,12 @@ _edje_emit_handle(Edje *ed, const char *sig, const char *src, rp = _edje_real_part_get(ed, pr->filter.part ? pr->filter.part : src); if (rp) - exec = (rp->chosen_description->state.name == pr->filter.state); + { + if (rp->program) + exec = EINA_FALSE; + else + exec = (rp->chosen_description->state.name == pr->filter.state); + } } if (exec) -- 2.7.4