summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Juyung Seo <seojuyung@gmail.com>2013-05-03 03:13:36 +0900
committerDaniel Juyung Seo <seojuyung@gmail.com>2013-05-03 03:14:37 +0900
commita68479d142e42e7d8f537e94b518b4f086ce4dbd (patch)
treefb87036eb503f0f186ba902081cc364e87033458
parent5db29cdb1f0058cb0701d75679739a948ed80224 (diff)
downloadelementary-a68479d142e42e7d8f537e94b518b4f086ce4dbd.tar.gz
elm_genlist: refactoring. code clean up.
introduced ELM_GENLIST_DATA_GET_FROM_ITEM and made sources so much cleaner.
-rw-r--r--src/lib/elm_genlist.c568
-rw-r--r--src/lib/elm_widget_genlist.h5
2 files changed, 292 insertions, 281 deletions
diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c
index ea5ef6477..8a87b7879 100644
--- a/src/lib/elm_genlist.c
+++ b/src/lib/elm_genlist.c
@@ -30,8 +30,6 @@ EAPI Eo_Op ELM_OBJ_GENLIST_BASE_ID = EO_NOOP;
ERR(_msg); \
if (getenv("ELM_ERROR_ABORT")) abort();
-#define GL_IT(_it) (_it->item)
-
static const char SIG_ACTIVATED[] = "activated";
static const char SIG_CLICKED_DOUBLE[] = "clicked,double";
static const char SIG_SELECTED[] = "selected";
@@ -663,6 +661,7 @@ _item_tree_effect_before(Elm_Gen_Item *it)
{
Elm_Gen_Item *it2;
Eina_List *l;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
EINA_LIST_FOREACH(it->item->items, l, it2)
{
@@ -670,10 +669,10 @@ _item_tree_effect_before(Elm_Gen_Item *it)
{
if (!it2->realized)
it2->item->tree_effect_hide_me = EINA_TRUE;
- if (GL_IT(it)->wsd->move_effect_mode ==
+ if (sd->move_effect_mode ==
ELM_GENLIST_TREE_EFFECT_EXPAND)
edje_object_signal_emit(VIEW(it2), "elm,state,hide", "");
- else if (GL_IT(it)->wsd->move_effect_mode ==
+ else if (sd->move_effect_mode ==
ELM_GENLIST_TREE_EFFECT_CONTRACT)
_item_contract_emit(it2);
}
@@ -689,15 +688,16 @@ _item_position(Elm_Gen_Item *it,
{
if (!it) return;
if (!view) return;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
evas_event_freeze
- (evas_object_evas_get((GL_IT(it)->wsd)->obj));
+ (evas_object_evas_get(sd->obj));
evas_object_resize(view, it->item->w, it->item->h);
evas_object_move(view, it_x, it_y);
evas_object_show(view);
- evas_event_thaw(evas_object_evas_get((GL_IT(it)->wsd)->obj));
+ evas_event_thaw(evas_object_evas_get(sd->obj));
evas_event_thaw_eval
- (evas_object_evas_get((GL_IT(it)->wsd)->obj));
+ (evas_object_evas_get(sd->obj));
}
static void
@@ -1075,20 +1075,23 @@ _decorate_all_item_realize(Elm_Gen_Item *it,
const char *stacking;
const char *stacking_even;
- if ((!it) || (it->item->decorate_all_item_realized) ||
- (it->generation < GL_IT(it)->wsd->generation))
+ if (!it) return;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+
+ if ((it->item->decorate_all_item_realized) ||
+ (it->generation < sd->generation))
return;
it->deco_all_view = edje_object_add(evas_object_evas_get(WIDGET(it)));
edje_object_scale_set(it->deco_all_view, elm_widget_scale_get(WIDGET(it)) *
elm_config_scale_get());
- evas_object_smart_member_add(it->deco_all_view, GL_IT(it)->wsd->pan_obj);
+ evas_object_smart_member_add(it->deco_all_view, sd->pan_obj);
elm_widget_sub_object_add(WIDGET(it), it->deco_all_view);
if (it->item->type & ELM_GENLIST_ITEM_TREE)
strncpy(buf, "tree", sizeof(buf));
else strncpy(buf, "item", sizeof(buf));
- if (GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS)
+ if (sd->mode == ELM_LIST_COMPRESS)
strncat(buf, "_compress", sizeof(buf) - strlen(buf) - 1);
strncat(buf, "/", sizeof(buf) - strlen(buf) - 1);
@@ -1236,10 +1239,11 @@ static void
_item_cache_add(Elm_Gen_Item *it)
{
Item_Cache *itc;
- Evas_Object *obj = GL_IT(it)->wsd->obj;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+ Evas_Object *obj = sd->obj;
evas_event_freeze(evas_object_evas_get(obj));
- if (GL_IT(it)->wsd->item_cache_max <= 0)
+ if (sd->item_cache_max <= 0)
{
evas_object_del(VIEW(it));
VIEW(it) = NULL;
@@ -1254,7 +1258,7 @@ _item_cache_add(Elm_Gen_Item *it)
return;
}
- GL_IT(it)->wsd->item_cache_count++;
+ sd->item_cache_count++;
itc = calloc(1, sizeof(Item_Cache));
if (!itc)
{
@@ -1262,8 +1266,8 @@ _item_cache_add(Elm_Gen_Item *it)
evas_event_thaw_eval(evas_object_evas_get(obj));
return;
}
- GL_IT(it)->wsd->item_cache =
- eina_inlist_prepend(GL_IT(it)->wsd->item_cache, EINA_INLIST_GET(itc));
+ sd->item_cache =
+ eina_inlist_prepend(sd->item_cache, EINA_INLIST_GET(itc));
itc->spacer = it->spacer;
it->spacer = NULL;
itc->base_view = VIEW(it);
@@ -1296,7 +1300,7 @@ _item_cache_add(Elm_Gen_Item *it)
edje_object_signal_callback_del_full
(itc->base_view, "elm,action,contract", "elm", _contract_signal_cb, it);
_item_mouse_callbacks_del(it, itc->base_view);
- _item_cache_clean(GL_IT(it)->wsd);
+ _item_cache_clean(sd);
evas_event_thaw(evas_object_evas_get(obj));
evas_event_thaw_eval(evas_object_evas_get(obj));
@@ -1309,9 +1313,10 @@ _item_cache_find(Elm_Gen_Item *it)
Item_Cache *itc = NULL;
Eina_Inlist *l;
Eina_Bool tree = 0;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
if (it->item->type & ELM_GENLIST_ITEM_TREE) tree = 1;
- EINA_INLIST_FOREACH_SAFE(GL_IT(it)->wsd->item_cache, l, itc)
+ EINA_INLIST_FOREACH_SAFE(sd->item_cache, l, itc)
{
if ((itc->selected) || (itc->disabled) || (itc->expanded))
continue;
@@ -1321,10 +1326,9 @@ _item_cache_find(Elm_Gen_Item *it)
(it->itc->item_style && itc->item_style &&
(!strcmp(it->itc->item_style, itc->item_style)))))
{
- GL_IT(it)->wsd->item_cache =
- eina_inlist_remove
- (GL_IT(it)->wsd->item_cache, EINA_INLIST_GET(itc));
- GL_IT(it)->wsd->item_cache_count--;
+ sd->item_cache =
+ eina_inlist_remove (sd->item_cache, EINA_INLIST_GET(itc));
+ sd->item_cache_count--;
return itc;
}
@@ -1465,8 +1469,9 @@ _item_realize(Elm_Gen_Item *it,
const char *treesize;
char buf[1024];
int tsize = 20;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- if (it->generation < GL_IT(it)->wsd->generation) return;
+ if (it->generation < sd->generation) return;
if (it->realized)
{
if (it->item->order_num_in != in)
@@ -1483,7 +1488,7 @@ _item_realize(Elm_Gen_Item *it,
it->item->nocache_once = EINA_FALSE;
else if (!it->item->nocache)
itc = _item_cache_find(it);
- if (itc && (!GL_IT(it)->wsd->tree_effect_enabled))
+ if (itc && (!sd->tree_effect_enabled))
{
VIEW(it) = itc->base_view;
itc->base_view = NULL;
@@ -1499,16 +1504,16 @@ _item_realize(Elm_Gen_Item *it,
edje_object_scale_set(VIEW(it),
elm_widget_scale_get(WIDGET(it)) *
elm_config_scale_get());
- evas_object_smart_member_add(VIEW(it), GL_IT(it)->wsd->pan_obj);
+ evas_object_smart_member_add(VIEW(it), sd->pan_obj);
elm_widget_sub_object_add(WIDGET(it), VIEW(it));
if (it->item->type & ELM_GENLIST_ITEM_TREE)
snprintf(buf, sizeof(buf), "tree%s/%s",
- GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS ? "_compress" :
+ sd->mode == ELM_LIST_COMPRESS ? "_compress" :
"", it->itc->item_style ? : "default");
else
snprintf(buf, sizeof(buf), "item%s/%s",
- GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS ? "_compress" :
+ sd->mode == ELM_LIST_COMPRESS ? "_compress" :
"", it->itc->item_style ? : "default");
elm_widget_theme_object_set
@@ -1534,7 +1539,7 @@ _item_realize(Elm_Gen_Item *it,
if (!(it->deco_all_view) && (it->item->type != ELM_GENLIST_ITEM_GROUP))
{
- if (GL_IT(it)->wsd->reorder_mode)
+ if (sd->reorder_mode)
edje_object_signal_emit
(VIEW(it), "elm,state,reorder,mode_set", "elm");
else
@@ -1568,7 +1573,7 @@ _item_realize(Elm_Gen_Item *it,
(VIEW(it), "elm,action,contract", "elm", _contract_signal_cb, it);
_item_mouse_callbacks_add(it, VIEW(it));
- if ((GL_IT(it)->wsd->decorate_all_mode) && (!it->deco_all_view) &&
+ if ((sd->decorate_all_mode) && (!it->deco_all_view) &&
(it->item->type != ELM_GENLIST_ITEM_GROUP) &&
(it->itc->decorate_all_item_style))
_decorate_all_item_realize(it, EINA_FALSE);
@@ -1578,19 +1583,19 @@ _item_realize(Elm_Gen_Item *it,
}
/* homogenous genlist shortcut */
- if ((calc) && (GL_IT(it)->wsd->homogeneous) && (!it->item->mincalcd) &&
- ((it->group && GL_IT(it)->wsd->group_item_width) ||
- (!it->group && GL_IT(it)->wsd->item_width)))
+ if ((calc) && (sd->homogeneous) && (!it->item->mincalcd) &&
+ ((it->group && sd->group_item_width) ||
+ (!it->group && sd->item_width)))
{
if (it->group)
{
- it->item->w = it->item->minw = GL_IT(it)->wsd->group_item_width;
- it->item->h = it->item->minh = GL_IT(it)->wsd->group_item_height;
+ it->item->w = it->item->minw = sd->group_item_width;
+ it->item->h = it->item->minh = sd->group_item_height;
}
else
{
- it->item->w = it->item->minw = GL_IT(it)->wsd->item_width;
- it->item->h = it->item->minh = GL_IT(it)->wsd->item_height;
+ it->item->w = it->item->minw = sd->item_width;
+ it->item->h = it->item->minh = sd->item_height;
}
it->item->mincalcd = EINA_TRUE;
}
@@ -1626,8 +1631,8 @@ _item_realize(Elm_Gen_Item *it,
if (it->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
- if (GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS)
- mw = GL_IT(it)->wsd->prev_viewport_w;
+ if (sd->mode == ELM_LIST_COMPRESS)
+ mw = sd->prev_viewport_w;
edje_object_size_min_restricted_calc(VIEW(it), &mw, &mh, mw, mh);
if (it->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
@@ -1635,16 +1640,16 @@ _item_realize(Elm_Gen_Item *it,
it->item->h = it->item->minh = mh;
it->item->mincalcd = EINA_TRUE;
- if ((!GL_IT(it)->wsd->group_item_width) && (it->group))
+ if ((!sd->group_item_width) && (it->group))
{
- GL_IT(it)->wsd->group_item_width = mw;
- GL_IT(it)->wsd->group_item_height = mh;
+ sd->group_item_width = mw;
+ sd->group_item_height = mh;
}
- else if ((!GL_IT(it)->wsd->item_width) &&
+ else if ((!sd->item_width) &&
(it->item->type == ELM_GENLIST_ITEM_NONE))
{
- GL_IT(it)->wsd->item_width = mw;
- GL_IT(it)->wsd->item_height = mh;
+ sd->item_width = mw;
+ sd->item_height = mh;
}
}
if (!calc) evas_object_show(VIEW(it));
@@ -1669,7 +1674,7 @@ _item_realize(Elm_Gen_Item *it,
{
if (it->item->tree_effect_hide_me)
{
- if (GL_IT(it)->wsd->move_effect_mode
+ if (sd->move_effect_mode
!= ELM_GENLIST_TREE_EFFECT_NONE)
edje_object_signal_emit(VIEW(it), "elm,state,hide", "");
it->item->tree_effect_hide_me = EINA_FALSE;
@@ -1677,7 +1682,7 @@ _item_realize(Elm_Gen_Item *it,
evas_object_smart_callback_call(WIDGET(it), SIG_REALIZED, it);
}
- if ((!calc) && (GL_IT(it)->wsd->decorate_all_mode) &&
+ if ((!calc) && (sd->decorate_all_mode) &&
(it->item->type != ELM_GENLIST_ITEM_GROUP))
{
if (it->itc->decorate_all_item_style)
@@ -1881,10 +1886,11 @@ _reorder_move_animator_cb(void *data)
double t;
Elm_Gen_Item *it = data;
Eina_Bool down = EINA_FALSE;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
int y, dy = it->item->h / 10 * elm_config_scale_get(), diff;
t = ((0.0 > (t = ecore_loop_time_get()
- - GL_IT(it)->wsd->start_time)) ? 0.0 : t);
+ - sd->start_time)) ? 0.0 : t);
if (t <= REORDER_EFFECT_TIME)
y = (1 * sin((t / REORDER_EFFECT_TIME) * (M_PI / 2)) * dy);
@@ -1910,15 +1916,15 @@ _reorder_move_animator_cb(void *data)
(it, it->deco_all_view, it->item->scrl_x, it->item->old_scrl_y);
else
_item_position(it, VIEW(it), it->item->scrl_x, it->item->old_scrl_y);
- _group_items_recalc(GL_IT(it)->wsd);
+ _group_items_recalc(sd);
- if ((GL_IT(it)->wsd->reorder_pan_move) ||
+ if ((sd->reorder_pan_move) ||
(down && it->item->old_scrl_y >= it->item->scrl_y) ||
(!down && it->item->old_scrl_y <= it->item->scrl_y))
{
it->item->old_scrl_y = it->item->scrl_y;
it->item->move_effect_enabled = EINA_FALSE;
- GL_IT(it)->wsd->reorder_move_animator = NULL;
+ sd->reorder_move_animator = NULL;
return ECORE_CALLBACK_CANCEL;
}
@@ -1928,29 +1934,29 @@ _reorder_move_animator_cb(void *data)
static int
_reorder_item_space_get(Elm_Gen_Item *it)
{
- Elm_Gen_Item *reorder_it = GL_IT(it)->wsd->reorder_it;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+ Elm_Gen_Item *reorder_it = sd->reorder_it;
Evas_Coord rox, roy, row, roh, oy, oh;
Eina_Bool top = EINA_FALSE;
if (!reorder_it) return 0;
- evas_object_geometry_get(GL_IT(it)->wsd->pan_obj, NULL, &oy, NULL, &oh);
+ evas_object_geometry_get(sd->pan_obj, NULL, &oy, NULL, &oh);
evas_object_geometry_get
- (GL_IT(it)->wsd->VIEW(reorder_it), &rox, &roy, &row, &roh);
+ (sd->VIEW(reorder_it), &rox, &roy, &row, &roh);
- if ((GL_IT(it)->wsd->reorder_start_y < it->item->block->y) &&
- (roy - oy + (roh / 2) >= it->item->block->y - GL_IT(it)->wsd->pan_y))
+ if ((sd->reorder_start_y < it->item->block->y) &&
+ (roy - oy + (roh / 2) >= it->item->block->y - sd->pan_y))
{
it->item->block->reorder_offset =
- GL_IT(it)->wsd->reorder_it->item->h * -1;
+ sd->reorder_it->item->h * -1;
if (it->item->block->count == 1)
- GL_IT(it)->wsd->reorder_rel = it;
+ sd->reorder_rel = it;
}
- else if ((GL_IT(it)->wsd->reorder_start_y >= it->item->block->y) &&
- (roy - oy + (roh / 2) <= it->item->block->y -
- GL_IT(it)->wsd->pan_y))
+ else if ((sd->reorder_start_y >= it->item->block->y) &&
+ (roy - oy + (roh / 2) <= it->item->block->y - sd->pan_y))
{
- it->item->block->reorder_offset = GL_IT(it)->wsd->reorder_it->item->h;
+ it->item->block->reorder_offset = sd->reorder_it->item->h;
}
else
it->item->block->reorder_offset = 0;
@@ -1962,9 +1968,9 @@ _reorder_item_space_get(Elm_Gen_Item *it)
rox, roy + (roh / 2), row, 1));
if (top)
{
- GL_IT(it)->wsd->reorder_rel = it;
- it->item->scrl_y += GL_IT(it)->wsd->reorder_it->item->h;
- return GL_IT(it)->wsd->reorder_it->item->h;
+ sd->reorder_rel = it;
+ it->item->scrl_y += sd->reorder_it->item->h;
+ return sd->reorder_it->item->h;
}
else
return 0;
@@ -1979,6 +1985,7 @@ _item_block_position(Item_Block *itb,
const Eina_List *l;
Eina_Bool vis = EINA_FALSE;
Evas_Coord y = 0, ox, oy, ow, oh, cvx, cvy, cvw, cvh;
+ Elm_Genlist_Smart_Data *sd = NULL;
evas_event_freeze(evas_object_evas_get((itb->sd)->obj));
evas_object_geometry_get(itb->sd->pan_obj, &ox, &oy, &ow, &oh);
@@ -1988,15 +1995,16 @@ _item_block_position(Item_Block *itb,
EINA_LIST_FOREACH(itb->items, l, it)
{
- if (it->generation < GL_IT(it)->wsd->generation) continue;
- else if (GL_IT(it)->wsd->reorder_it == it)
+ sd = GL_IT(it)->wsd;
+ if (it->generation < sd->generation) continue;
+ else if (sd->reorder_it == it)
continue;
it->x = 0;
it->y = y;
it->item->w = itb->w;
- it->item->scrl_x = itb->x + it->x - GL_IT(it)->wsd->pan_x + ox;
- it->item->scrl_y = itb->y + it->y - GL_IT(it)->wsd->pan_y + oy;
+ it->item->scrl_x = itb->x + it->x - sd->pan_x + ox;
+ it->item->scrl_y = itb->y + it->y - sd->pan_y + oy;
vis = (ELM_RECTS_INTERSECT
(it->item->scrl_x, it->item->scrl_y, it->item->w, it->item->h,
@@ -2011,7 +2019,7 @@ _item_block_position(Item_Block *itb,
{
if (vis || it->dragging)
{
- if (GL_IT(it)->wsd->reorder_mode)
+ if (sd->reorder_mode)
y += _reorder_item_space_get(it);
git = it->item->group_item;
if (git)
@@ -2025,29 +2033,29 @@ _item_block_position(Item_Block *itb,
git->item->scrl_x = it->item->scrl_x;
git->item->want_realize = EINA_TRUE;
}
- if ((GL_IT(it)->wsd->reorder_it) &&
+ if ((sd->reorder_it) &&
(it->item->old_scrl_y != it->item->scrl_y))
{
if (!it->item->move_effect_enabled)
{
it->item->move_effect_enabled = EINA_TRUE;
- GL_IT(it)->wsd->reorder_move_animator =
+ sd->reorder_move_animator =
ecore_animator_add(
_reorder_move_animator_cb, it);
}
}
if (!it->item->move_effect_enabled)
{
- if ((GL_IT(it)->wsd->decorate_all_mode) &&
+ if ((sd->decorate_all_mode) &&
(it->itc->decorate_all_item_style))
_decorate_all_item_position
(it, it->item->scrl_x, it->item->scrl_y);
else
{
- if (!GL_IT(it)->wsd->tree_effect_enabled ||
- (GL_IT(it)->wsd->move_effect_mode ==
+ if (!sd->tree_effect_enabled ||
+ (sd->move_effect_mode ==
ELM_GENLIST_TREE_EFFECT_NONE) ||
- ((GL_IT(it)->wsd->move_effect_mode !=
+ ((sd->move_effect_mode !=
ELM_GENLIST_TREE_EFFECT_NONE) &&
(it->item->old_scrl_y ==
it->item->scrl_y)))
@@ -2068,7 +2076,7 @@ _item_block_position(Item_Block *itb,
}
else
{
- if (!GL_IT(it)->wsd->tree_effect_animator)
+ if (!sd->tree_effect_animator)
_elm_genlist_item_unrealize(it, EINA_FALSE);
}
}
@@ -2704,10 +2712,11 @@ static void
_item_highlight(Elm_Gen_Item *it)
{
const char *selectraise;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- if ((GL_IT(it)->wsd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
- (!GL_IT(it)->wsd->highlight) ||
- (it->generation < GL_IT(it)->wsd->generation) ||
+ if ((sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
+ (!sd->highlight) ||
+ (it->generation < sd->generation) ||
(it->highlighted) || elm_widget_item_disabled_get(it) ||
(it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
(it->item->deco_it_view) ||
@@ -2807,12 +2816,13 @@ _item_block_del(Elm_Gen_Item *it)
Eina_Inlist *il;
Item_Block *itb = it->item->block;
Eina_Bool block_changed = EINA_FALSE;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
itb->items = eina_list_remove(itb->items, it);
itb->count--;
itb->changed = EINA_TRUE;
- if (GL_IT(it)->wsd->calc_job) ecore_job_del(GL_IT(it)->wsd->calc_job);
- GL_IT(it)->wsd->calc_job = ecore_job_add(_calc_job, GL_IT(it)->wsd->obj);
+ if (sd->calc_job) ecore_job_del(sd->calc_job);
+ sd->calc_job = ecore_job_add(_calc_job, sd->obj);
if (itb->count < 1)
{
Item_Block *itbn;
@@ -2825,15 +2835,14 @@ _item_block_del(Elm_Gen_Item *it)
else
{
_item_block_position_update(il->next, itb->position);
- GL_IT(it)->wsd->blocks =
- eina_inlist_remove(GL_IT(it)->wsd->blocks, il);
+ sd->blocks = eina_inlist_remove(sd->blocks, il);
}
free(itb);
if (itbn) itbn->changed = EINA_TRUE;
}
else
{
- if (itb->count < (itb->sd->max_items_per_block / 2))
+ if (itb->count < (sd->max_items_per_block / 2))
{
Item_Block *itbp;
Item_Block *itbn;
@@ -2845,29 +2854,28 @@ _item_block_del(Elm_Gen_Item *it)
/* merge block with previous */
if ((itbp) &&
((itbp->count + itb->count) <
- (itb->sd->max_items_per_block +
- (itb->sd->max_items_per_block / 2))))
+ (sd->max_items_per_block +
+ (sd->max_items_per_block / 2))))
{
_item_block_merge(itbp, itb);
_item_block_position_update
(EINA_INLIST_GET(itb)->next, itb->position);
- GL_IT(it)->wsd->blocks = eina_inlist_remove
- (GL_IT(it)->wsd->blocks, EINA_INLIST_GET(itb));
+ sd->blocks = eina_inlist_remove
+ (sd->blocks, EINA_INLIST_GET(itb));
free(itb);
block_changed = EINA_TRUE;
}
/* merge block with next */
else if ((itbn) &&
((itbn->count + itb->count) <
- (itb->sd->max_items_per_block +
- (itb->sd->max_items_per_block / 2))))
+ (sd->max_items_per_block +
+ (sd->max_items_per_block / 2))))
{
_item_block_merge(itb, itbn);
_item_block_position_update
(EINA_INLIST_GET(itbn)->next, itbn->position);
- GL_IT(it)->wsd->blocks =
- eina_inlist_remove(GL_IT(it)->wsd->blocks,
- EINA_INLIST_GET(itbn));
+ sd->blocks =
+ eina_inlist_remove(sd->blocks, EINA_INLIST_GET(itbn));
free(itbn);
block_changed = EINA_TRUE;
}
@@ -2876,10 +2884,10 @@ _item_block_del(Elm_Gen_Item *it)
if (block_changed)
{
- GL_IT(it)->wsd->pan_changed = EINA_TRUE;
- evas_object_smart_changed(GL_IT(it)->wsd->pan_obj);
- if (GL_IT(it)->wsd->calc_job) ecore_job_del(GL_IT(it)->wsd->calc_job);
- GL_IT(it)->wsd->calc_job = NULL;
+ sd->pan_changed = EINA_TRUE;
+ evas_object_smart_changed(sd->pan_obj);
+ if (sd->calc_job) ecore_job_del(sd->calc_job);
+ sd->calc_job = NULL;
}
}
@@ -2924,16 +2932,17 @@ _decorate_all_item_unrealize(Elm_Gen_Item *it)
static void
_elm_genlist_item_del_not_serious(Elm_Gen_Item *it)
{
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+
elm_widget_item_pre_notify_del(it);
- it->generation = GL_IT(it)->wsd->generation - 1; /* This means that
+ it->generation = sd->generation - 1; /* This means that
* the item is
* deleted */
if (it->walking > 0) return;
if (it->selected)
- GL_IT(it)->wsd->selected =
- eina_list_remove(GL_IT(it)->wsd->selected, it);
+ sd->selected = eina_list_remove(sd->selected, it);
if (it->itc->func.del)
it->itc->func.del((void *)it->base.data, WIDGET(it));
@@ -2942,34 +2951,33 @@ _elm_genlist_item_del_not_serious(Elm_Gen_Item *it)
static void
_elm_genlist_item_del_serious(Elm_Gen_Item *it)
{
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+
_elm_genlist_item_del_not_serious(it);
- GL_IT(it)->wsd->items =
- eina_inlist_remove(GL_IT(it)->wsd->items, EINA_INLIST_GET(it));
+ sd->items = eina_inlist_remove(sd->items, EINA_INLIST_GET(it));
if (it->tooltip.del_cb)
it->tooltip.del_cb((void *)it->tooltip.data, WIDGET(it), it);
- GL_IT(it)->wsd->walking -= it->walking;
+ sd->walking -= it->walking;
if (it->long_timer)
{
ecore_timer_del(it->long_timer);
it->long_timer = NULL;
}
if (it->group)
- GL_IT(it)->wsd->group_items =
- eina_list_remove(GL_IT(it)->wsd->group_items, it);
+ sd->group_items = eina_list_remove(sd->group_items, it);
- if (GL_IT(it)->wsd->state)
+ if (sd->state)
{
- eina_inlist_sorted_state_free(GL_IT(it)->wsd->state);
- GL_IT(it)->wsd->state = NULL;
+ eina_inlist_sorted_state_free(sd->state);
+ sd->state = NULL;
}
- if (GL_IT(it)->wsd->calc_job) ecore_job_del(GL_IT(it)->wsd->calc_job);
- GL_IT(it)->wsd->calc_job =
- ecore_job_add(_calc_job, GL_IT(it)->wsd->obj);
+ if (sd->calc_job) ecore_job_del(sd->calc_job);
+ sd->calc_job = ecore_job_add(_calc_job, sd->obj);
- if (GL_IT(it)->wsd->last_selected_item == (Elm_Object_Item *)it)
- GL_IT(it)->wsd->last_selected_item = NULL;
- GL_IT(it)->wsd->item_count--;
+ if (sd->last_selected_item == (Elm_Object_Item *)it)
+ sd->last_selected_item = NULL;
+ sd->item_count--;
free(it->item);
it->item = NULL;
@@ -2979,7 +2987,7 @@ static void
_item_del(Elm_Gen_Item *it)
{
Evas_Object *obj = WIDGET(it);
- Elm_Genlist_Smart_Data *sd = GL_IT(it)->wsd;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
evas_event_freeze(evas_object_evas_get(obj));
elm_genlist_item_subitems_clear((Elm_Object_Item *)it);
@@ -3025,12 +3033,14 @@ _item_del(Elm_Gen_Item *it)
static void
_item_unselect(Elm_Gen_Item *it)
{
- if ((it->generation < GL_IT(it)->wsd->generation)) return;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+
+ if ((it->generation < sd->generation)) return;
_item_unhighlight(it); /* unhighlight the item first */
if (!it->selected) return; /* then check whether the item is selected */
it->selected = EINA_FALSE;
- GL_IT(it)->wsd->selected = eina_list_remove(GL_IT(it)->wsd->selected, it);
+ sd->selected = eina_list_remove(sd->selected, it);
evas_object_smart_callback_call(WIDGET(it), SIG_UNSELECTED, it);
}
@@ -3041,12 +3051,10 @@ _item_mouse_move_cb(void *data,
void *event_info)
{
Elm_Gen_Item *it = data;
- Elm_Genlist_Smart_Data *sd;
Evas_Event_Mouse_Move *ev = event_info;
Evas_Coord ox, oy, ow, oh, it_scrl_y, y_pos;
Evas_Coord minw = 0, minh = 0, x, y, dx, dy, adx, ady;
-
- sd = GL_IT(it)->wsd;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
{
@@ -3187,22 +3195,20 @@ static Eina_Bool
_long_press_cb(void *data)
{
Elm_Gen_Item *it = data, *it_tmp;
- Elm_Genlist_Smart_Data *sd;
Eina_List *list;
-
- sd = GL_IT(it)->wsd;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
it->long_timer = NULL;
if (elm_widget_item_disabled_get(it) || (it->dragging) ||
(it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY))
return ECORE_CALLBACK_CANCEL;
- GL_IT(it)->wsd->longpressed = EINA_TRUE;
+ sd->longpressed = EINA_TRUE;
evas_object_smart_callback_call(WIDGET(it), SIG_LONGPRESSED, it);
- if ((GL_IT(it)->wsd->reorder_mode) && (!it->group))
+ if ((sd->reorder_mode) && (!it->group))
{
- GL_IT(it)->wsd->reorder_it = it;
- GL_IT(it)->wsd->reorder_start_y = 0;
+ sd->reorder_it = it;
+ sd->reorder_start_y = 0;
if (it->deco_all_view)
evas_object_raise(it->deco_all_view);
else
@@ -3213,7 +3219,7 @@ _long_press_cb(void *data)
(EINA_FALSE, EINA_FALSE));
list = elm_genlist_realized_items_get
- ((GL_IT(it)->wsd)->obj);
+ ((sd)->obj);
EINA_LIST_FREE(list, it_tmp)
if (it != it_tmp) _item_unselect(it_tmp);
@@ -3223,7 +3229,7 @@ _long_press_cb(void *data)
return ECORE_CALLBACK_RENEW;
}
- if (!GL_IT(it)->wsd->decorate_all_mode)
+ if (!sd->decorate_all_mode)
edje_object_signal_emit
(VIEW(it), "elm,state,reorder,enabled", "elm");
}
@@ -3235,21 +3241,22 @@ static void
_swipe_do(Elm_Gen_Item *it)
{
int i, sum = 0;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
if (!it) return;
if ((it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) ||
elm_widget_item_disabled_get(it)) return;
- GL_IT(it)->wsd->swipe = EINA_FALSE;
- for (i = 0; i < GL_IT(it)->wsd->movements; i++)
+ sd->swipe = EINA_FALSE;
+ for (i = 0; i < sd->movements; i++)
{
- sum += GL_IT(it)->wsd->history[i].x;
- if (abs(GL_IT(it)->wsd->history[0].y -
- GL_IT(it)->wsd->history[i].y) > 10) return;
+ sum += sd->history[i].x;
+ if (abs(sd->history[0].y - sd->history[i].y) > 10)
+ return;
}
- sum /= GL_IT(it)->wsd->movements;
- if (abs(sum - GL_IT(it)->wsd->history[0].x) <= 10) return;
+ sum /= sd->movements;
+ if (abs(sum - sd->history[0].x) <= 10) return;
evas_object_smart_callback_call(WIDGET(it), SIG_SWIPE, it);
}
@@ -3257,10 +3264,11 @@ static Eina_Bool
_swipe_cancel(void *data)
{
Elm_Gen_Item *it = data;
-
if (!it) return ECORE_CALLBACK_CANCEL;
- GL_IT(it)->wsd->swipe = EINA_FALSE;
- GL_IT(it)->wsd->movements = 0;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+
+ sd->swipe = EINA_FALSE;
+ sd->movements = 0;
return ECORE_CALLBACK_RENEW;
}
@@ -3282,40 +3290,39 @@ _multi_touch_gesture_eval(void *data)
Elm_Gen_Item *it = data;
Evas_Coord minw = 0, minh = 0;
Evas_Coord off_x, off_y, off_mx, off_my;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- GL_IT(it)->wsd->multi_touched = EINA_FALSE;
- if (GL_IT(it)->wsd->multi_timer)
+ sd->multi_touched = EINA_FALSE;
+ if (sd->multi_timer)
{
- ecore_timer_del(GL_IT(it)->wsd->multi_timer);
- GL_IT(it)->wsd->multi_timer = NULL;
+ ecore_timer_del(sd->multi_timer);
+ sd->multi_timer = NULL;
}
- if (GL_IT(it)->wsd->multi_timeout)
+ if (sd->multi_timeout)
{
- GL_IT(it)->wsd->multi_timeout = EINA_FALSE;
+ sd->multi_timeout = EINA_FALSE;
return;
}
elm_coords_finger_size_adjust(1, &minw, 1, &minh);
- off_x = abs(GL_IT(it)->wsd->cur_x - GL_IT(it)->wsd->prev_x);
- off_y = abs(GL_IT(it)->wsd->cur_y - GL_IT(it)->wsd->prev_y);
- off_mx = abs(GL_IT(it)->wsd->cur_mx - GL_IT(it)->wsd->prev_mx);
- off_my = abs(GL_IT(it)->wsd->cur_my - GL_IT(it)->wsd->prev_my);
+ off_x = abs(sd->cur_x - sd->prev_x);
+ off_y = abs(sd->cur_y - sd->prev_y);
+ off_mx = abs(sd->cur_mx - sd->prev_mx);
+ off_my = abs(sd->cur_my - sd->prev_my);
if (((off_x > minw) || (off_y > minh)) && ((off_mx > minw)
|| (off_my > minh)))
{
if ((off_x + off_mx) > (off_y + off_my))
{
- if ((GL_IT(it)->wsd->cur_x > GL_IT(it)->wsd->prev_x)
- && (GL_IT(it)->wsd->cur_mx > GL_IT(it)->wsd->prev_mx))
+ if ((sd->cur_x > sd->prev_x) && (sd->cur_mx > sd->prev_mx))
evas_object_smart_callback_call
(WIDGET(it), SIG_MULTI_SWIPE_RIGHT, it);
- else if ((GL_IT(it)->wsd->cur_x < GL_IT(it)->wsd->prev_x)
- && (GL_IT(it)->wsd->cur_mx < GL_IT(it)->wsd->prev_mx))
+ else if ((sd->cur_x < sd->prev_x) && (sd->cur_mx < sd->prev_mx))
evas_object_smart_callback_call
(WIDGET(it), SIG_MULTI_SWIPE_LEFT, it);
- else if (abs(GL_IT(it)->wsd->cur_x - GL_IT(it)->wsd->cur_mx) >
- abs(GL_IT(it)->wsd->prev_x - GL_IT(it)->wsd->prev_mx))
+ else if (abs(sd->cur_x - sd->cur_mx) >
+ abs(sd->prev_x - sd->prev_mx))
evas_object_smart_callback_call
(WIDGET(it), SIG_MULTI_PINCH_OUT, it);
else
@@ -3324,16 +3331,14 @@ _multi_touch_gesture_eval(void *data)
}
else
{
- if ((GL_IT(it)->wsd->cur_y > GL_IT(it)->wsd->prev_y)
- && (GL_IT(it)->wsd->cur_my > GL_IT(it)->wsd->prev_my))
+ if ((sd->cur_y > sd->prev_y) && (sd->cur_my > sd->prev_my))
evas_object_smart_callback_call
(WIDGET(it), SIG_MULTI_SWIPE_DOWN, it);
- else if ((GL_IT(it)->wsd->cur_y < GL_IT(it)->wsd->prev_y)
- && (GL_IT(it)->wsd->cur_my < GL_IT(it)->wsd->prev_my))
+ else if ((sd->cur_y < sd->prev_y) && (sd->cur_my < sd->prev_my))
evas_object_smart_callback_call
(WIDGET(it), SIG_MULTI_SWIPE_UP, it);
- else if (abs(GL_IT(it)->wsd->cur_y - GL_IT(it)->wsd->cur_my) >
- abs(GL_IT(it)->wsd->prev_y - GL_IT(it)->wsd->prev_my))
+ else if (abs(sd->cur_y - sd->cur_my) >
+ abs(sd->prev_y - sd->prev_my))
evas_object_smart_callback_call
(WIDGET(it), SIG_MULTI_PINCH_OUT, it);
else
@@ -3342,7 +3347,7 @@ _multi_touch_gesture_eval(void *data)
}
}
- GL_IT(it)->wsd->multi_timeout = EINA_FALSE;
+ sd->multi_timeout = EINA_FALSE;
}
static void
@@ -3353,20 +3358,21 @@ _item_multi_down_cb(void *data,
{
Elm_Gen_Item *it = data;
Evas_Event_Multi_Down *ev = event_info;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- if ((GL_IT(it)->wsd->multi_device != 0) || (GL_IT(it)->wsd->multi_touched)
- || (GL_IT(it)->wsd->multi_timeout))
+ if ((sd->multi_device != 0) || (sd->multi_touched)
+ || (sd->multi_timeout))
return;
- GL_IT(it)->wsd->multi_device = ev->device;
- GL_IT(it)->wsd->multi_down = EINA_TRUE;
- GL_IT(it)->wsd->multi_touched = EINA_TRUE;
- GL_IT(it)->wsd->prev_mx = ev->canvas.x;
- GL_IT(it)->wsd->prev_my = ev->canvas.y;
- if (!GL_IT(it)->wsd->wasselected)
+ sd->multi_device = ev->device;
+ sd->multi_down = EINA_TRUE;
+ sd->multi_touched = EINA_TRUE;
+ sd->prev_mx = ev->canvas.x;
+ sd->prev_my = ev->canvas.y;
+ if (!sd->wasselected)
_item_unselect(it);
- GL_IT(it)->wsd->wasselected = EINA_FALSE;
- GL_IT(it)->wsd->longpressed = EINA_FALSE;
+ sd->wasselected = EINA_FALSE;
+ sd->longpressed = EINA_FALSE;
if (it->long_timer)
{
ecore_timer_del(it->long_timer);
@@ -3382,11 +3388,11 @@ _item_multi_down_cb(void *data,
ecore_timer_del(it->item->swipe_timer);
it->item->swipe_timer = NULL;
}
- if (GL_IT(it)->wsd->on_hold)
+ if (sd->on_hold)
{
- GL_IT(it)->wsd->swipe = EINA_FALSE;
- GL_IT(it)->wsd->movements = 0;
- GL_IT(it)->wsd->on_hold = EINA_FALSE;
+ sd->swipe = EINA_FALSE;
+ sd->movements = 0;
+ sd->on_hold = EINA_FALSE;
}
}
@@ -3398,11 +3404,12 @@ _item_multi_up_cb(void *data,
{
Elm_Gen_Item *it = data;
Evas_Event_Multi_Up *ev = event_info;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- if (GL_IT(it)->wsd->multi_device != ev->device) return;
- GL_IT(it)->wsd->multi_device = 0;
- GL_IT(it)->wsd->multi_down = EINA_FALSE;
- if (GL_IT(it)->wsd->mouse_down) return;
+ if (sd->multi_device != ev->device) return;
+ sd->multi_device = 0;
+ sd->multi_down = EINA_FALSE;
+ if (sd->mouse_down) return;
_multi_touch_gesture_eval(data);
}
@@ -3414,10 +3421,11 @@ _item_multi_move_cb(void *data,
{
Elm_Gen_Item *it = data;
Evas_Event_Multi_Move *ev = event_info;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- if (GL_IT(it)->wsd->multi_device != ev->device) return;
- GL_IT(it)->wsd->cur_mx = ev->cur.canvas.x;
- GL_IT(it)->wsd->cur_my = ev->cur.canvas.y;
+ if (sd->multi_device != ev->device) return;
+ sd->cur_mx = ev->cur.canvas.x;
+ sd->cur_my = ev->cur.canvas.y;
}
static void
@@ -3427,11 +3435,9 @@ _item_mouse_down_cb(void *data,
void *event_info)
{
Evas_Event_Mouse_Down *ev = event_info;
- Elm_Genlist_Smart_Data *sd;
Elm_Gen_Item *it = data;
Evas_Coord x, y;
-
- sd = GL_IT(it)->wsd;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
if (ev->button != 1) return;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
@@ -3932,18 +3938,19 @@ _item_move_after(Elm_Gen_Item *it,
if (!it) return;
if (!after) return;
if (it == after) return;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- GL_IT(it)->wsd->items =
- eina_inlist_remove(GL_IT(it)->wsd->items, EINA_INLIST_GET(it));
+ sd->items =
+ eina_inlist_remove(sd->items, EINA_INLIST_GET(it));
if (it->item->block) _item_block_del(it);
- GL_IT(it)->wsd->items = eina_inlist_append_relative
- (GL_IT(it)->wsd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(after));
+ sd->items = eina_inlist_append_relative
+ (sd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(after));
it->item->rel = after;
after->item->rel_revs = eina_list_append(after->item->rel_revs, it);
it->item->before = EINA_FALSE;
if (after->item->group_item) it->item->group_item = after->item->group_item;
- _item_queue(GL_IT(it)->wsd, it, NULL);
+ _item_queue(sd, it, NULL);
evas_object_smart_callback_call(WIDGET(it), SIG_MOVED_AFTER, it);
}
@@ -3953,13 +3960,10 @@ _access_activate_cb(void *data __UNUSED__,
Evas_Object *part_obj __UNUSED__,
Elm_Object_Item *item)
{
- Elm_Genlist_Smart_Data *sd;
- Elm_Gen_Item *it;
-
- it = (Elm_Gen_Item *)item;
+ Elm_Gen_Item *it = (Elm_Gen_Item *)item;
if (!it) return;
- sd = GL_IT(it)->wsd;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
if (!sd) return;
if (sd->multi)
@@ -4004,18 +4008,19 @@ _item_move_before(Elm_Gen_Item *it,
if (!it) return;
if (!before) return;
if (it == before) return;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- GL_IT(it)->wsd->items =
- eina_inlist_remove(GL_IT(it)->wsd->items, EINA_INLIST_GET(it));
+ sd->items =
+ eina_inlist_remove(sd->items, EINA_INLIST_GET(it));
if (it->item->block) _item_block_del(it);
- GL_IT(it)->wsd->items = eina_inlist_prepend_relative
- (GL_IT(it)->wsd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(before));
+ sd->items = eina_inlist_prepend_relative
+ (sd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(before));
it->item->rel = before;
before->item->rel_revs = eina_list_append(before->item->rel_revs, it);
it->item->before = EINA_TRUE;
if (before->item->group_item)
it->item->group_item = before->item->group_item;
- _item_queue(GL_IT(it)->wsd, it, NULL);
+ _item_queue(sd, it, NULL);
evas_object_smart_callback_call(WIDGET(it), SIG_MOVED_BEFORE, it);
}
@@ -4028,12 +4033,11 @@ _item_mouse_up_cb(void *data,
{
Evas_Event_Mouse_Up *ev = event_info;
Eina_Bool dragged = EINA_FALSE;
- Elm_Genlist_Smart_Data *sd;
Elm_Gen_Item *it = data;
if (ev->button != 1) return;
it->down = EINA_FALSE;
- sd = GL_IT(it)->wsd;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
sd->mouse_down = EINA_FALSE;
evas_object_smart_callback_call(WIDGET(it), SIG_RELEASED, it);
@@ -4209,7 +4213,7 @@ _scroll_hold_timer_cb(void *data)
static void
_decorate_item_unrealize(Elm_Gen_Item *it)
{
- Elm_Genlist_Smart_Data *sd = GL_IT(it)->wsd;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
Evas_Object *content, *obj = sd->obj;
if (!it->item->deco_it_view) return;
@@ -4245,11 +4249,12 @@ _decorate_item_finished_signal_cb(void *data,
char buf[1024];
Evas *te;
- if (!data || !obj) return;
+ if (!it || !obj) return;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
te = evas_object_evas_get(obj);
- if ((it->generation < GL_IT(it)->wsd->generation) || (!it->realized)
+ if ((it->generation < sd->generation) || (!it->realized)
|| (!it->item->deco_it_view)) return;
evas_event_freeze(te);
@@ -4259,7 +4264,7 @@ _decorate_item_finished_signal_cb(void *data,
evas_object_raise(it->item->VIEW(group_item));
snprintf(buf, sizeof(buf), "elm,state,%s,passive,finished",
- GL_IT(it)->wsd->decorate_it_type);
+ sd->decorate_it_type);
edje_object_signal_callback_del_full
(obj, buf, "elm", _decorate_item_finished_signal_cb, it);
evas_event_thaw(te);
@@ -4383,11 +4388,13 @@ _item_block_recalc(Item_Block *itb,
Evas_Coord minw = 0, minh = 0;
Eina_Bool show_me = EINA_FALSE, changed = EINA_FALSE;
Evas_Coord y = 0;
+ Elm_Genlist_Smart_Data *sd = NULL;
itb->num = in;
EINA_LIST_FOREACH(itb->items, l, it)
{
- if (it->generation < GL_IT(it)->wsd->generation) continue;
+ sd = GL_IT(it)->wsd;
+ if (it->generation < sd->generation) continue;
show_me |= it->item->show_me;
if (!itb->realized)
{
@@ -4408,16 +4415,16 @@ _item_block_recalc(Item_Block *itb,
if (it->group)
{
it->item->w = it->item->minw =
- GL_IT(it)->wsd->group_item_width;
+ sd->group_item_width;
it->item->h = it->item->minh =
- GL_IT(it)->wsd->group_item_height;
+ sd->group_item_height;
}
else
{
it->item->w = it->item->minw =
- GL_IT(it)->wsd->item_width;
+ sd->item_width;
it->item->h = it->item->minh =
- GL_IT(it)->wsd->item_height;
+ sd->item_height;
}
}
else
@@ -4619,10 +4626,11 @@ static void
_decorate_item_realize(Elm_Gen_Item *it)
{
char buf[1024];
- Evas_Object *obj = (GL_IT(it)->wsd)->obj;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+ Evas_Object *obj = sd->obj;
if ((it->item->deco_it_view) || (it->generation <
- GL_IT(it)->wsd->generation)) return;
+ sd->generation)) return;
evas_event_freeze(evas_object_evas_get(obj));
it->item->deco_it_view = edje_object_add(evas_object_evas_get(WIDGET(it)));
@@ -4630,11 +4638,11 @@ _decorate_item_realize(Elm_Gen_Item *it)
(it->item->deco_it_view, elm_widget_scale_get(WIDGET(it)) *
elm_config_scale_get());
evas_object_smart_member_add
- (it->item->deco_it_view, GL_IT(it)->wsd->pan_obj);
+ (it->item->deco_it_view, sd->pan_obj);
elm_widget_sub_object_add(WIDGET(it), it->item->deco_it_view);
strncpy(buf, "item", sizeof(buf));
- if (GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS)
+ if (sd->mode == ELM_LIST_COMPRESS)
strncat(buf, "_compress", sizeof(buf) - strlen(buf) - 1);
if (it->item->order_num_in & 0x1)
@@ -4687,12 +4695,11 @@ _decorate_item_realize(Elm_Gen_Item *it)
static void
_decorate_item_set(Elm_Gen_Item *it)
{
- Elm_Genlist_Smart_Data *sd;
char buf[1024];
if (!it) return;
- sd = GL_IT(it)->wsd;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
sd->mode_item = it;
it->item->nocache_once = EINA_TRUE;
@@ -5029,42 +5036,43 @@ static void
_item_select(Elm_Gen_Item *it)
{
Evas_Object *obj = WIDGET(it);
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- if ((it->generation < GL_IT(it)->wsd->generation) ||
+ if ((it->generation < sd->generation) ||
(it->decorate_it_set) ||
(it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
- (GL_IT(it)->wsd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
+ (sd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
return;
if (!it->selected)
{
it->selected = EINA_TRUE;
- GL_IT(it)->wsd->selected =
- eina_list_append(GL_IT(it)->wsd->selected, it);
+ sd->selected =
+ eina_list_append(sd->selected, it);
}
- else if (GL_IT(it)->wsd->select_mode != ELM_OBJECT_SELECT_MODE_ALWAYS)
+ else if (sd->select_mode != ELM_OBJECT_SELECT_MODE_ALWAYS)
return;
evas_object_ref(obj);
it->walking++;
- GL_IT(it)->wsd->walking++;
+ sd->walking++;
if (it->func.func) it->func.func((void *)it->func.data, WIDGET(it), it);
- if (it->generation == GL_IT(it)->wsd->generation)
+ if (it->generation == sd->generation)
evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, it);
it->walking--;
- GL_IT(it)->wsd->walking--;
- if ((GL_IT(it)->wsd->clear_me) && (!GL_IT(it)->wsd->walking))
+ sd->walking--;
+ if ((sd->clear_me) && (!sd->walking))
_elm_genlist_clear(WIDGET(it), EINA_TRUE);
else
{
- if ((!it->walking) && (it->generation < GL_IT(it)->wsd->generation))
+ if ((!it->walking) && (it->generation < sd->generation))
{
it->del_cb(it);
elm_widget_item_free(it);
}
else
- GL_IT(it)->wsd->last_selected_item = (Elm_Object_Item *)it;
+ sd->last_selected_item = (Elm_Object_Item *)it;
}
evas_object_unref(obj);
}
@@ -5135,6 +5143,7 @@ static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *item)
{
Elm_Gen_Item *it = (Elm_Gen_Item *)item;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
if (it->walking > 0)
{
@@ -5148,18 +5157,16 @@ _item_del_pre_hook(Elm_Object_Item *item)
EINA_LIST_FREE(it->item->rel_revs, tmp) tmp->item->rel = NULL;
}
elm_genlist_item_subitems_clear(item);
- if (GL_IT(it)->wsd->show_item == it)
- GL_IT(it)->wsd->show_item = NULL;
+ if (sd->show_item == it)
+ sd->show_item = NULL;
_elm_genlist_item_del_not_serious(it);
if (it->item->block)
{
if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE);
it->item->block->changed = EINA_TRUE;
- if (GL_IT(it)->wsd->calc_job)
- ecore_job_del(GL_IT(it)->wsd->calc_job);
- GL_IT(it)->wsd->calc_job =
- ecore_job_add(_calc_job, GL_IT(it)->wsd->obj);
+ if (sd->calc_job) ecore_job_del(sd->calc_job);
+ sd->calc_job = ecore_job_add(_calc_job, sd->obj);
}
if (it->parent)
{
@@ -5967,11 +5974,9 @@ elm_genlist_item_selected_set(Elm_Object_Item *item,
Eina_Bool selected)
{
Elm_Gen_Item *it = (Elm_Gen_Item *)item;
- Elm_Genlist_Smart_Data *sd;
-
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- sd = GL_IT(it)->wsd;
if ((it->generation < sd->generation) || elm_widget_item_disabled_get(it))
return;
selected = !!selected;
@@ -6033,32 +6038,30 @@ _elm_genlist_move_items_set(Elm_Gen_Item *it)
Eina_List *l, *ll;
Elm_Gen_Item *it2 = NULL;
Evas_Coord ox, oy, ow, oh, dh = 0;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- GL_IT(it)->wsd->expanded_next_item =
+ sd->expanded_next_item =
_elm_genlist_expanded_next_item_get(it);
if (it->item->expanded)
{
- GL_IT(it)->wsd->move_items = elm_genlist_realized_items_get
- ((GL_IT(it)->wsd)->obj);
+ sd->move_items = elm_genlist_realized_items_get((sd)->obj);
- EINA_LIST_FOREACH_SAFE(GL_IT(it)->wsd->move_items, l, ll, it2)
+ EINA_LIST_FOREACH_SAFE(sd->move_items, l, ll, it2)
{
- if (it2 == GL_IT(it)->wsd->expanded_next_item) break;
- GL_IT(it)->wsd->move_items =
- eina_list_remove(GL_IT(it)->wsd->move_items, it2);
+ if (it2 == sd->expanded_next_item) break;
+ sd->move_items = eina_list_remove(sd->move_items, it2);
}
}
else
{
- evas_object_geometry_get(GL_IT(it)->wsd->pan_obj, &ox, &oy, &ow, &oh);
- it2 = GL_IT(it)->wsd->expanded_next_item;
+ evas_object_geometry_get(sd->pan_obj, &ox, &oy, &ow, &oh);
+ it2 = sd->expanded_next_item;
while (it2 && (dh < oy + oh))
{
dh += it2->item->h;
- GL_IT(it)->wsd->move_items =
- eina_list_append(GL_IT(it)->wsd->move_items, it2);
+ sd->move_items = eina_list_append(sd->move_items, it2);
it2 = (Elm_Gen_Item *)
elm_genlist_item_next_get((Elm_Object_Item *)it2);
}
@@ -6091,32 +6094,33 @@ elm_genlist_item_expanded_set(Elm_Object_Item *item,
Elm_Gen_Item *it = (Elm_Gen_Item *)item;
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
expanded = !!expanded;
if (it->item->expanded == expanded) return;
if (it->item->type != ELM_GENLIST_ITEM_TREE) return;
it->item->expanded = expanded;
- GL_IT(it)->wsd->expanded_item = it;
+ sd->expanded_item = it;
_elm_genlist_move_items_set(it);
- if (GL_IT(it)->wsd->tree_effect_enabled && !GL_IT(it)->wsd->alpha_bg)
- GL_IT(it)->wsd->alpha_bg = _tray_alpha_bg_create(WIDGET(it));
+ if (sd->tree_effect_enabled && !sd->alpha_bg)
+ sd->alpha_bg = _tray_alpha_bg_create(WIDGET(it));
if (it->item->expanded)
{
- GL_IT(it)->wsd->move_effect_mode = ELM_GENLIST_TREE_EFFECT_EXPAND;
+ sd->move_effect_mode = ELM_GENLIST_TREE_EFFECT_EXPAND;
if (it->realized)
edje_object_signal_emit(VIEW(it), "elm,state,expanded", "elm");
evas_object_smart_callback_call(WIDGET(it), SIG_EXPANDED, it);
- GL_IT(it)->wsd->auto_scroll_enabled = EINA_TRUE;
+ sd->auto_scroll_enabled = EINA_TRUE;
}
else
{
- GL_IT(it)->wsd->move_effect_mode = ELM_GENLIST_TREE_EFFECT_CONTRACT;
+ sd->move_effect_mode = ELM_GENLIST_TREE_EFFECT_CONTRACT;
if (it->realized)
edje_object_signal_emit(VIEW(it), "elm,state,contracted", "elm");
evas_object_smart_callback_call(WIDGET(it), SIG_CONTRACTED, it);
- GL_IT(it)->wsd->auto_scroll_enabled = EINA_FALSE;
+ sd->auto_scroll_enabled = EINA_FALSE;
}
}
@@ -6147,32 +6151,33 @@ _elm_genlist_item_coordinates_calc(Elm_Object_Item *item,
{
Elm_Gen_Item *it = (Elm_Gen_Item *)item;
Evas_Coord gith = 0;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
- if (it->generation < GL_IT(it)->wsd->generation) return EINA_FALSE;
- if (!((GL_IT(it)->wsd->homogeneous) &&
- (GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS)))
+ if (it->generation < sd->generation) return EINA_FALSE;
+ if (!((sd->homogeneous) &&
+ (sd->mode == ELM_LIST_COMPRESS)))
{
if ((it->item->queued) || (!it->item->mincalcd))
{
- GL_IT(it)->wsd->show_item = it;
- GL_IT(it)->wsd->bring_in = bring_in;
- GL_IT(it)->wsd->scroll_to_type = type;
+ sd->show_item = it;
+ sd->bring_in = bring_in;
+ sd->scroll_to_type = type;
it->item->show_me = EINA_TRUE;
return EINA_FALSE;
}
}
- if (GL_IT(it)->wsd->show_item)
+ if (sd->show_item)
{
- GL_IT(it)->wsd->show_item->item->show_me = EINA_FALSE;
- GL_IT(it)->wsd->show_item = NULL;
+ sd->show_item->item->show_me = EINA_FALSE;
+ sd->show_item = NULL;
}
- evas_object_geometry_get(GL_IT(it)->wsd->pan_obj, NULL, NULL, w, h);
+ evas_object_geometry_get(sd->pan_obj, NULL, NULL, w, h);
switch (type)
{
case ELM_GENLIST_ITEM_SCROLLTO_IN:
if ((it->item->group_item) &&
- (GL_IT(it)->wsd->pan_y > (it->y + it->item->block->y)))
+ (sd->pan_y > (it->y + it->item->block->y)))
gith = it->item->group_item->item->h;
*h = it->item->h;
*y = it->y + it->item->block->y - gith;
@@ -6269,14 +6274,15 @@ elm_genlist_item_update(Elm_Object_Item *item)
Elm_Gen_Item *it = (Elm_Gen_Item *)item;
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
if (!it->item->block) return;
- if (it->generation < GL_IT(it)->wsd->generation) return;
+ if (it->generation < sd->generation) return;
it->item->mincalcd = EINA_FALSE;
it->item->updateme = EINA_TRUE;
it->item->block->updateme = EINA_TRUE;
- if (GL_IT(it)->wsd->update_job) ecore_job_del(GL_IT(it)->wsd->update_job);
- GL_IT(it)->wsd->update_job = ecore_job_add(_update_job, GL_IT(it)->wsd->obj);
+ if (sd->update_job) ecore_job_del(sd->update_job);
+ sd->update_job = ecore_job_add(_update_job, sd->obj);
}
EAPI void
@@ -7125,14 +7131,15 @@ static void
_flip_job(void *data)
{
Elm_Gen_Item *it = (Elm_Gen_Item *)data;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
_item_unselect(it);
_elm_genlist_item_unrealize(it, EINA_FALSE);
it->flipped = EINA_TRUE;
it->item->nocache = EINA_TRUE;
- if (GL_IT(it)->wsd->calc_job) ecore_job_del(GL_IT(it)->wsd->calc_job);
- GL_IT(it)->wsd->calc_job = ecore_job_add(_calc_job, GL_IT(it)->wsd->obj);
+ if (sd->calc_job) ecore_job_del(sd->calc_job);
+ sd->calc_job = ecore_job_add(_calc_job, sd->obj);
}
EAPI void
@@ -7251,7 +7258,9 @@ elm_genlist_item_select_mode_set(Elm_Object_Item *item,
ELM_GENLIST_ITEM_CHECK_OR_RETURN(item);
if (!it) return;
- if (it->generation < GL_IT(it)->wsd->generation) return;
+ ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd);
+
+ if (it->generation < sd->generation) return;
if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
return;
if (it->select_mode != mode)
@@ -7262,19 +7271,16 @@ elm_genlist_item_select_mode_set(Elm_Object_Item *item,
it->item->mincalcd = EINA_FALSE;
it->item->updateme = EINA_TRUE;
if (it->item->block) it->item->block->updateme = EINA_TRUE;
- if (GL_IT(it)->wsd->update_job)
- ecore_job_del(GL_IT(it)->wsd->update_job);
- GL_IT(it)->wsd->update_job =
- ecore_job_add(_update_job, GL_IT(it)->wsd->obj);
+ if (sd->update_job) ecore_job_del(sd->update_job);
+ sd->update_job = ecore_job_add(_update_job, sd->obj);
// reset homogeneous item size
- if (GL_IT(it)->wsd->homogeneous)
+ if (sd->homogeneous)
{
if (it->group)
- GL_IT(it)->wsd->group_item_width =
- GL_IT(it)->wsd->group_item_height = 0;
+ sd->group_item_width = sd->group_item_height = 0;
else
- GL_IT(it)->wsd->item_width = GL_IT(it)->wsd->item_height = 0;
+ sd->item_width = sd->item_height = 0;
}
}
}
diff --git a/src/lib/elm_widget_genlist.h b/src/lib/elm_widget_genlist.h
index 34f75c47e..075ea6f58 100644
--- a/src/lib/elm_widget_genlist.h
+++ b/src/lib/elm_widget_genlist.h
@@ -278,9 +278,14 @@ struct _Elm_Genlist_Pan_Smart_Data
* @}
*/
+#define GL_IT(_it) (_it->item)
+
#define ELM_GENLIST_DATA_GET(o, sd) \
Elm_Genlist_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_GENLIST_CLASS)
+#define ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd) \
+ Elm_Genlist_Smart_Data * sd = GL_IT(it)->wsd
+
#define ELM_GENLIST_PAN_DATA_GET(o, sd) \
Elm_Genlist_Pan_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_GENLIST_PAN_CLASS)