genlist: Internal refactoring for the code readability.

Added one more internal variable to reduce unnecessary pointer
redirection too much.
Elm_Genlist_Smart_Data *sd is used many times in those functions but it
was always redirected from psd->wsd. I just cut down the step and made
the code more readable and consistent with other lines of code.

psd->wsd --> sd
This commit is contained in:
Daniel Juyung Seo 2014-03-09 04:09:22 +09:00
parent c01aeabf65
commit e25fbe9768
1 changed files with 54 additions and 51 deletions

View File

@ -123,12 +123,13 @@ _elm_genlist_pan_smart_pos_set(Eo *obj, void *_pd, va_list *list)
Item_Block *itb;
Elm_Genlist_Pan_Smart_Data *psd = _pd;
Elm_Genlist_Smart_Data *sd = psd->wsd;
if ((x == psd->wsd->pan_x) && (y == psd->wsd->pan_y)) return;
psd->wsd->pan_x = x;
psd->wsd->pan_y = y;
if ((x == sd->pan_x) && (y == sd->pan_y)) return;
sd->pan_x = x;
sd->pan_y = y;
EINA_INLIST_FOREACH(psd->wsd->blocks, itb)
EINA_INLIST_FOREACH(sd->blocks, itb)
{
if ((itb->y + itb->h) > y)
{
@ -139,15 +140,15 @@ _elm_genlist_pan_smart_pos_set(Eo *obj, void *_pd, va_list *list)
{
if ((itb->y + it->y) >= y)
{
psd->wsd->anchor_item = it;
psd->wsd->anchor_y = -(itb->y + it->y - y);
sd->anchor_item = it;
sd->anchor_y = -(itb->y + it->y - y);
goto done;
}
}
}
}
done:
if (!psd->wsd->reorder_move_animator) evas_object_smart_changed(obj);
if (!sd->reorder_move_animator) evas_object_smart_changed(obj);
}
static void
@ -238,26 +239,27 @@ _elm_genlist_pan_smart_resize(Eo *obj, void *_pd, va_list *list)
Evas_Coord h = va_arg(*list, Evas_Coord);
Elm_Genlist_Pan_Smart_Data *psd = _pd;
Elm_Genlist_Smart_Data *sd = psd->wsd;
evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
if ((ow == w) && (oh == h)) return;
if ((psd->wsd->mode == ELM_LIST_COMPRESS) && (ow != w))
if ((sd->mode == ELM_LIST_COMPRESS) && (ow != w))
{
/* fix me later */
ecore_job_del(psd->resize_job);
psd->resize_job =
ecore_job_add(_elm_genlist_pan_smart_resize_job, obj);
}
psd->wsd->pan_changed = EINA_TRUE;
sd->pan_changed = EINA_TRUE;
evas_object_smart_changed(obj);
ecore_job_del(psd->wsd->calc_job);
ecore_job_del(sd->calc_job);
// if the width changed we may have to resize content if scrollbar went
// away or appeared to queue a job to deal with it. it should settle in
// the end to a steady-state
if (ow != w)
psd->wsd->calc_job = ecore_job_add(_calc_job, psd->wobj);
sd->calc_job = ecore_job_add(_calc_job, psd->wobj);
else
psd->wsd->calc_job = NULL;
sd->calc_job = NULL;
}
static void
@ -2194,44 +2196,45 @@ _elm_genlist_pan_smart_calculate(Eo *obj EINA_UNUSED, void *_pd, va_list *list E
int in = 0;
Elm_Genlist_Pan_Smart_Data *psd = _pd;
Elm_Genlist_Smart_Data *sd = psd->wsd;
evas_event_freeze(evas_object_evas_get(obj));
if (psd->wsd->pan_changed)
if (sd->pan_changed)
{
ecore_job_del(psd->wsd->calc_job);
psd->wsd->calc_job = NULL;
_calc_job(psd->wsd->obj);
psd->wsd->pan_changed = EINA_FALSE;
ecore_job_del(sd->calc_job);
sd->calc_job = NULL;
_calc_job(sd->obj);
sd->pan_changed = EINA_FALSE;
}
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
evas_output_viewport_get(evas_object_evas_get(obj), &cvx, &cvy, &cvw, &cvh);
EINA_LIST_FOREACH(psd->wsd->group_items, l, git)
EINA_LIST_FOREACH(sd->group_items, l, git)
{
git->item->want_realize = EINA_FALSE;
}
if (psd->wsd->tree_effect_enabled &&
(psd->wsd->move_effect_mode != ELM_GENLIST_TREE_EFFECT_NONE))
if (sd->tree_effect_enabled &&
(sd->move_effect_mode != ELM_GENLIST_TREE_EFFECT_NONE))
{
if (!psd->wsd->tree_effect_animator)
if (!sd->tree_effect_animator)
{
_item_tree_effect_before(psd->wsd->expanded_item);
evas_object_raise(psd->wsd->alpha_bg);
evas_object_stack_below(psd->wsd->alpha_bg, psd->wsd->stack[1]);
evas_object_show(psd->wsd->alpha_bg);
psd->wsd->start_time = ecore_time_get();
psd->wsd->tree_effect_animator =
ecore_animator_add(_tree_effect_animator_cb, psd->wsd->obj);
_item_tree_effect_before(sd->expanded_item);
evas_object_raise(sd->alpha_bg);
evas_object_stack_below(sd->alpha_bg, sd->stack[1]);
evas_object_show(sd->alpha_bg);
sd->start_time = ecore_time_get();
sd->tree_effect_animator =
ecore_animator_add(_tree_effect_animator_cb, sd->obj);
}
}
EINA_INLIST_FOREACH(psd->wsd->blocks, itb)
EINA_INLIST_FOREACH(sd->blocks, itb)
{
itb->w = psd->wsd->minw;
if (ELM_RECTS_INTERSECT(itb->x - psd->wsd->pan_x + ox,
itb->y - psd->wsd->pan_y + oy,
itb->w = sd->minw;
if (ELM_RECTS_INTERSECT(itb->x - sd->pan_x + ox,
itb->y - sd->pan_y + oy,
itb->w, itb->h,
cvx, cvy, cvw, cvh))
{
@ -2245,34 +2248,34 @@ _elm_genlist_pan_smart_calculate(Eo *obj EINA_UNUSED, void *_pd, va_list *list E
}
in += itb->count;
}
if ((!psd->wsd->reorder_it) || (psd->wsd->reorder_pan_move))
_group_items_recalc(psd->wsd);
if ((psd->wsd->reorder_mode) && (psd->wsd->reorder_it))
if ((!sd->reorder_it) || (sd->reorder_pan_move))
_group_items_recalc(sd);
if ((sd->reorder_mode) && (sd->reorder_it))
{
if (psd->wsd->pan_y != psd->wsd->reorder_old_pan_y)
psd->wsd->reorder_pan_move = EINA_TRUE;
else psd->wsd->reorder_pan_move = EINA_FALSE;
if (sd->pan_y != sd->reorder_old_pan_y)
sd->reorder_pan_move = EINA_TRUE;
else sd->reorder_pan_move = EINA_FALSE;
evas_object_raise(psd->wsd->VIEW(reorder_it));
evas_object_stack_below(psd->wsd->VIEW(reorder_it), psd->wsd->stack[1]);
psd->wsd->reorder_old_pan_y = psd->wsd->pan_y;
psd->wsd->start_time = ecore_loop_time_get();
evas_object_raise(sd->VIEW(reorder_it));
evas_object_stack_below(sd->VIEW(reorder_it), sd->stack[1]);
sd->reorder_old_pan_y = sd->pan_y;
sd->start_time = ecore_loop_time_get();
}
if (!psd->wsd->tree_effect_enabled ||
(psd->wsd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_NONE))
_item_auto_scroll(psd->wsd);
if (!sd->tree_effect_enabled ||
(sd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_NONE))
_item_auto_scroll(sd);
eo_do((psd->wsd)->obj,
eo_do((sd)->obj,
elm_scrollable_interface_content_pos_get(&vx, &vy),
elm_scrollable_interface_content_viewport_size_get(&vw, &vh));
if (psd->wsd->reorder_fast == 1)
eo_do((psd->wsd)->obj, elm_scrollable_interface_content_region_show(vx, vy - 10, vw, vh));
else if (psd->wsd->reorder_fast == -1)
eo_do((psd->wsd)->obj, elm_scrollable_interface_content_region_show(vx, vy + 10, vw, vh));
if (sd->reorder_fast == 1)
eo_do((sd)->obj, elm_scrollable_interface_content_region_show(vx, vy - 10, vw, vh));
else if (sd->reorder_fast == -1)
eo_do((sd)->obj, elm_scrollable_interface_content_region_show(vx, vy + 10, vw, vh));
if (psd->wsd->focused_item)
if (sd->focused_item)
_elm_widget_focus_highlight_start(psd->wobj);
evas_event_thaw(evas_object_evas_get(obj));