diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index a1da165df3..f54040ac8c 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -183,14 +183,6 @@ static const Elm_Action key_actions[] = { {NULL, NULL} }; -static inline void -_add_calc_job(Elm_Genlist_Data *sd) -{ - ELM_SAFE_FREE(sd->calc_job, ecore_job_del); - if (!efl_alive_get(sd->obj)) return; - sd->calc_job = ecore_job_add(_calc_job, sd->obj); -} - static void _size_cache_free(void *data) { @@ -296,7 +288,6 @@ _elm_genlist_pan_efl_gfx_entity_position_set(Eo *obj, Elm_Genlist_Pan_Data *psd, psd->wsd->pan_changed = EINA_TRUE; evas_object_smart_changed(obj); - ELM_SAFE_FREE(psd->wsd->calc_job, ecore_job_del); } static void @@ -332,9 +323,7 @@ _elm_genlist_pan_efl_gfx_entity_size_set(Eo *obj, Elm_Genlist_Pan_Data *psd, Ein // away or appeared to queue a job to deal with it. it should settle in // the end to a steady-state if (old.w != size.w) - _add_calc_job(sd); - else - ELM_SAFE_FREE(sd->calc_job, ecore_job_del); + efl_canvas_group_change(sd->obj); super: efl_gfx_entity_size_set(efl_super(obj, MY_PAN_CLASS), size); @@ -783,7 +772,7 @@ _must_recalc_idler(void *data) { ELM_GENLIST_DATA_GET(data, sd); - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); sd->must_recalc_idler = NULL; return ECORE_CALLBACK_CANCEL; } @@ -793,7 +782,7 @@ _calc_job(void *data) { int in = 0; Item_Block *itb, *chb = NULL; - ELM_GENLIST_DATA_GET(data, sd); + Elm_Genlist_Data *sd = data; Eina_Bool minw_change = EINA_FALSE; Eina_Bool did_must_recalc = EINA_FALSE; Evas_Coord minw = -1, minh = 0, y = 0, ow = 0, vw = 0; @@ -905,7 +894,7 @@ _calc_job(void *data) if (did_must_recalc) { if (!sd->must_recalc_idler) - sd->must_recalc_idler = ecore_idler_add(_must_recalc_idler, data); + sd->must_recalc_idler = ecore_idler_add(_must_recalc_idler, sd->obj); } if (!sd->show_item) sd->check_scroll = EINA_FALSE; if (sd->check_scroll) @@ -917,7 +906,6 @@ _calc_job(void *data) _item_scroll(sd); } - sd->calc_job = NULL; evas_object_smart_changed(sd->pan_obj); evas_event_thaw(e); evas_event_thaw_eval(e); @@ -956,11 +944,13 @@ _elm_genlist_efl_canvas_group_group_calculate(Eo *obj, Elm_Genlist_Data *sd) { itb->must_recalc = EINA_TRUE; } - _add_calc_job(sd); + _calc_job(sd); } minw = vmw; minh = vmh; } + else + _calc_job(sd); if (sd->scr_minw) { @@ -2621,9 +2611,7 @@ _elm_genlist_pan_efl_canvas_group_group_calculate(Eo *obj, Elm_Genlist_Pan_Data if (sd->pan_changed) { - ecore_job_del(sd->calc_job); - sd->calc_job = NULL; - _calc_job(sd->obj); + _calc_job(sd); sd->pan_changed = EINA_FALSE; } @@ -3577,7 +3565,7 @@ _elm_genlist_efl_ui_widget_theme_apply(Eo *obj, Elm_Genlist_Data *sd) itb->changed = EINA_TRUE; } if (sd->obj && efl_finalized_get(obj)) - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); elm_layout_sizing_eval(obj); evas_event_thaw(e); evas_event_thaw_eval(e); @@ -3699,7 +3687,7 @@ _item_block_del(Elm_Gen_Item *it) itb->items = eina_list_remove(itb->items, it); itb->count--; itb->changed = EINA_TRUE; - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); if (itb->count < 1) { Item_Block *itbn; @@ -3767,8 +3755,6 @@ _item_block_del(Elm_Gen_Item *it) { sd->pan_changed = EINA_TRUE; evas_object_smart_changed(sd->pan_obj); - ecore_job_del(sd->calc_job); - sd->calc_job = NULL; } } @@ -3847,7 +3833,7 @@ _elm_genlist_item_del_serious(Elm_Gen_Item *it) sd->group_items = eina_list_remove(sd->group_items, it); ELM_SAFE_FREE(sd->state, eina_inlist_sorted_state_free); - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); ELM_SAFE_FREE(it->item, free); } @@ -4049,7 +4035,7 @@ _item_mouse_move_cb(void *data, else _item_position(it, VIEW(it), it->item->scrl_x, y_pos); - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); } return; } @@ -4653,7 +4639,7 @@ newblock: itb->count++; itb->changed = EINA_TRUE; it->item->block = itb; - _add_calc_job(itb->sd); + efl_canvas_group_change(itb->sd->obj); if (itb->count > itb->sd->max_items_per_block) { @@ -4812,7 +4798,6 @@ _item_process_post(Elm_Genlist_Data *sd, Elm_Gen_Item *it) if (sd->pan_changed) { evas_object_smart_changed(sd->pan_obj); - ELM_SAFE_FREE(sd->calc_job, ecore_job_del); } } if (show_me) it->item->block->show_me = EINA_TRUE; @@ -4898,7 +4883,7 @@ _item_idle_enterer(void *data) if (wakeup) { // wake up mainloop - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); } if (ok == ECORE_CALLBACK_CANCEL) sd->queue_idle_enterer = NULL; @@ -5144,7 +5129,7 @@ _item_mouse_up_cb(void *data, } else { - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); } edje_object_signal_emit(VIEW(it), SIGNAL_REORDER_DISABLED, "elm"); if (_elm_config->atspi_mode) @@ -5541,7 +5526,7 @@ _update_job(void *data) } if (position) { - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); } evas_event_thaw(e); evas_event_thaw_eval(e); @@ -5895,7 +5880,6 @@ _elm_genlist_efl_canvas_group_group_del(Eo *obj, Elm_Genlist_Data *sd) EVAS_CALLBACK_CANVAS_VIEWPORT_RESIZE, _evas_viewport_resize_cb, sd); - ELM_SAFE_FREE(sd->calc_job, ecore_job_del); ELM_SAFE_FREE(sd->update_job, ecore_job_del); ELM_SAFE_FREE(sd->pan_obj, evas_object_del); ELM_SAFE_FREE(sd->queue_idle_enterer, ecore_idle_enterer_del); @@ -6048,7 +6032,6 @@ _internal_elm_genlist_clear(Evas_Object *obj) sd->pan_changed = EINA_TRUE; if (!sd->queue) { - ELM_SAFE_FREE(sd->calc_job, ecore_job_del); sd->anchor_item = NULL; ELM_SAFE_FREE(sd->queue_idle_enterer, ecore_idle_enterer_del); ELM_SAFE_FREE(sd->must_recalc_idler, ecore_idler_del); @@ -7296,7 +7279,7 @@ _elm_genlist_item_coordinates_calc(Elm_Gen_Item *it, sd->scroll_to_type = type; it->item->show_me = EINA_TRUE; - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); return EINA_FALSE; } @@ -7912,7 +7895,7 @@ _item_filtered_get(Elm_Gen_Item *it) _filter_item_internal(it); if (it->item->block) it->item->block->changed = EINA_TRUE; - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); } if (!it->hide) return EINA_TRUE; return EINA_FALSE; @@ -7971,7 +7954,7 @@ _item_filter_enterer(void *data) if (wakeup) { // wake up mainloop - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); } if (ok == ECORE_CALLBACK_CANCEL) { @@ -8023,7 +8006,7 @@ _elm_genlist_filter_set(Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd, void *filter_ } } } - _calc_job(sd->obj); + _calc_job(sd); sd->queue_filter_enterer = ecore_idle_enterer_add(_item_filter_enterer, sd->obj); @@ -8277,7 +8260,7 @@ _elm_genlist_decorate_mode_set(Eo *obj, Elm_Genlist_Data *sd, Eina_Bool decorate } } - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); } EOLIAN static void @@ -8423,7 +8406,7 @@ _flip_job(void *data) it->flipped = EINA_TRUE; it->item->nocache = EINA_TRUE; - _add_calc_job(sd); + efl_canvas_group_change(sd->obj); } EOLIAN static void diff --git a/src/lib/elementary/elm_widget_genlist.h b/src/lib/elementary/elm_widget_genlist.h index 613f258af0..b7ce598390 100644 --- a/src/lib/elementary/elm_widget_genlist.h +++ b/src/lib/elementary/elm_widget_genlist.h @@ -55,7 +55,6 @@ struct _Elm_Genlist_Data Elm_Object_Item *last_selected_item; Elm_Object_Item *focused_item; /**< a focused item by keypad arrow or mouse. This is set to NULL if widget looses focus. */ Elm_Object_Item *last_focused_item; /**< This records the last focused item when widget looses focus. This is required to set the focus on last focused item when widgets gets focus. */ - Ecore_Job *calc_job; int walking; int minw, minh; unsigned int item_count;