edje: prevent filter from matching during a program run.
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 24 Jan 2012 14:48:51 +0000 (14:48 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 24 Jan 2012 14:48:51 +0000 (14:48 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@67495 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
src/lib/edje_calc.c
src/lib/edje_program.c

index d4ad3b8..7a862f1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 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.
index 213e266..582cc85 100644 (file)
@@ -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;
      }
 
index d80c7c9..f82c99d 100644 (file)
@@ -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)