gw = wd->size.w;
gh = wd->size.h;
- EINA_LIST_FOREACH_SAFE(wd->download_list, l, ll, gi)
+ EINA_LIST_REVERSE_FOREACH_SAFE(wd->download_list, l, ll, gi)
{
xx = gi->out.x;
yy = gi->out.y;
if (!ELM_RECTS_INTERSECT(xx - wd->pan_x + ox,
yy - wd->pan_y + oy,
ww, hh,
- cvx, cvy, cvw, cvh))
+ cvx, cvy, cvw, cvh) ||
+ (gi->zoom != wd->zoom))
{
wd->download_list = eina_list_remove(wd->download_list, gi);
+ continue;
}
- }
- EINA_LIST_REVERSE_FOREACH_SAFE(wd->download_list, l, ll, gi)
- {
if (gi->wd->download_num >= MAX_CONCURRENT_DOWNLOAD) break;
Eina_Bool ret = ecore_file_download_full(gi->source, gi->file, _tile_downloaded, NULL, gi, &(gi->job), wd->ua);
}
}
+Grid *_get_current_grid(Widget_Data *wd)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ Eina_List *l;
+ Grid *g = NULL, *ret = NULL;
+ EINA_LIST_FOREACH(wd->grids, l, g)
+ {
+ if (wd->zoom == g->zoom)
+ {
+ ret = g;
+ break;
+ }
+ }
+ return ret;
+}
+
static Eina_Bool
_route_complete_cb(void *data, int ev_type __UNUSED__, void *event)
{
if (wd->grids)
{
- Eina_List *l;
Grid *g;
Evas_Coord ox, oy, ow, oh;
evas_object_geometry_get(wd->obj, &ox, &oy, &ow, &oh);
- EINA_LIST_FOREACH(wd->grids, l, g)
- {
- if (wd->zoom == g->zoom) break;
- }
+ g = _get_current_grid(wd);
route_place(wd->obj, g, wd->pan_x, wd->pan_y, ox, oy, ow, oh);
}
edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
if (wd->grids)
{
- Eina_List *l;
Grid *g;
Evas_Coord ox, oy, ow, oh;
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
- EINA_LIST_FOREACH(wd->grids, l, g)
- {
- if (wd->zoom == g->zoom) break;
- }
+ g = _get_current_grid(wd);
marker_place(obj, g, wd->pan_x, wd->pan_y, ox, oy, ow, oh);
}
if (wd->grids)
{
- Eina_List *l;
Grid *g;
Evas_Coord ox, oy, ow, oh;
evas_object_geometry_get(wd->obj, &ox, &oy, &ow, &oh);
- EINA_LIST_FOREACH(wd->grids, l, g)
- {
- if (wd->zoom == g->zoom) break;
- }
+ g = _get_current_grid(wd);
marker_place(wd->obj, g, wd->pan_x, wd->pan_y, ox, oy, ow, oh);
}
#else
clas->hide = hide;
if (wd->grids)
{
- Eina_List *l;
Grid *g;
Evas_Coord ox, oy, ow, oh;
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
- EINA_LIST_FOREACH(wd->grids, l, g)
- {
- if (wd->zoom == g->zoom) break;
- }
+ g = _get_current_grid(wd);
marker_place(obj, g, wd->pan_x, wd->pan_y, ox, oy, ow, oh);
}
#else