From 814d9bfb299db56509fed21ff1a0f1e3e6620ba5 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Tue, 24 Jan 2012 14:48:51 +0000 Subject: [PATCH] edje: prevent filter from matching during a program run. SVN revision: 67495 --- legacy/edje/ChangeLog | 4 ++++ legacy/edje/src/lib/edje_calc.c | 4 ++-- legacy/edje/src/lib/edje_program.c | 11 ++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/legacy/edje/ChangeLog b/legacy/edje/ChangeLog index d4ad3b86e4..7a862f180c 100644 --- a/legacy/edje/ChangeLog +++ b/legacy/edje/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/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index 213e266dbf..582cc85cbb 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/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/legacy/edje/src/lib/edje_program.c b/legacy/edje/src/lib/edje_program.c index d80c7c91f9..f82c99d96a 100644 --- a/legacy/edje/src/lib/edje_program.c +++ b/legacy/edje/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)