data_queue_program_lookup(pc, name, &(et->id));
break;
case EDJE_ACTION_TYPE_STATE_SET:
+ case EDJE_ACTION_TYPE_SIGNAL_EMIT:
case EDJE_ACTION_TYPE_DRAG_VAL_SET:
case EDJE_ACTION_TYPE_DRAG_VAL_STEP:
case EDJE_ACTION_TYPE_DRAG_VAL_PAGE:
[target]
@effect
Program or part on which the specified action acts. Multiple target
- keywords may be specified, one per target. SIGNAL_EMITs do not have
+ keywords may be specified, one per target. SIGNAL_EMITs can have
targets.
@endproperty
*/
@since 1.10
@effect
Programs or parts upon which the specified action will act. Multiple target
- or targets keywords may be specified. SIGNAL_EMITs do not have
+ or targets keywords may be specified. SIGNAL_EMITs can have
targets.
@endproperty
*/
case EDJE_ACTION_TYPE_SIGNAL_EMIT:
// _edje_emit(ed, "program,start", pr->name);
if (_edje_block_break(ed)) goto break_prog;
- _edje_emit(ed, pr->state, pr->state2);
+ if (pr->targets)
+ {
+ EINA_LIST_FOREACH(pr->targets, l, pt)
+ {
+ char buf[1024];
+
+ if (pt->id < 0) continue;
+ rp = ed->table_parts[pt->id % ed->table_parts_size];
+ if (!rp) continue;
+ snprintf(buf, sizeof(buf), "%s:%s", rp->part->name, pr->state);
+ _edje_emit(ed, buf, pr->state2);
+ }
+ }
+ else
+ _edje_emit(ed, pr->state, pr->state2);
if (_edje_block_break(ed)) goto break_prog;
// _edje_emit(ed, "program,stop", pr->name);
if (_edje_block_break(ed)) goto break_prog;