(!eina_tiler_empty(state->input)) &&
ec->first_mapped)
{
- Eina_Tiler *src, *tmp;
- int sw, sh;
-
- if (state->bw > 0) sw = state->bw;
- else sw = ec->w;
-
- if (state->bh > 0) sh = state->bh;
- else sh = ec->h;
-
- tmp = eina_tiler_new(sw, sh);
- eina_tiler_tile_size_set(tmp, 1, 1);
-
- eina_tiler_rect_add(tmp,
- &(Eina_Rectangle){0, 0, sw, sh});
+ Eina_Rectangle *rect;
+ Eina_Iterator *itr;
- if ((src = eina_tiler_intersection(state->input, tmp)))
+ e_comp_object_input_objs_del(ec->frame);
+ itr = eina_tiler_iterator_new(state->input);
+ EINA_ITERATOR_FOREACH(itr, rect)
{
- Eina_Rectangle *rect, *rect_input;
- Eina_Iterator *itr, *itr_input;
-
- e_comp_object_input_objs_del(ec->frame);
- itr = eina_tiler_iterator_new(src);
- EINA_ITERATOR_FOREACH(itr, rect)
- {
- itr_input = eina_tiler_iterator_new(state->input);
- EINA_ITERATOR_FOREACH(itr_input, rect_input)
- {
- if ((rect->x == rect_input->x) && (rect->y == rect_input->y))
- {
- if (rect->w > rect_input->w) rect->w = rect_input->w;
- if (rect->h > rect_input->h) rect->h = rect_input->h;
- }
- }
- ELOGF("COMP", "Set Input Area x:%d, y:%d, w:%d, h:%d",
- ec, rect->x, rect->y, rect->w, rect->h);
- e_comp_object_input_area_set(ec->frame,
- rect->x, rect->y,
- rect->w, rect->h);
- eina_iterator_free(itr_input);
- }
+ Eina_Rectangle r;
- eina_iterator_free(itr);
- eina_tiler_free(src);
+ EINA_RECTANGLE_SET(&r, rect->x, rect->y, rect->w, rect->h);
+ ELOGF("COMP", "Set Input Area x:%d, y:%d, w:%d, h:%d", ec, r.x, r.y, r.w, r.h);
+ e_comp_object_input_area_set(ec->frame, r.x, r.y, r.w, r.h);
}
- else
- e_comp_object_input_area_set(ec->frame, 0, 0, ec->w, ec->h);
-
- eina_tiler_free(tmp);
+ eina_iterator_free(itr);
/* clear input tiler */
eina_tiler_clear(state->input);