diff --git a/src/bin/e_ilist.c b/src/bin/e_ilist.c index a1752c9e1..a5b7f7be7 100644 --- a/src/bin/e_ilist.c +++ b/src/bin/e_ilist.c @@ -127,6 +127,7 @@ e_ilist_append(Evas_Object *obj, Evas_Object *icon, const char *label, int heade si->header = header; sd->items = evas_list_append(sd->items, si); edje_object_size_min_calc(si->base_obj, &mw, &mh); + e_box_freeze(sd->box_obj); e_box_pack_end(sd->box_obj, si->base_obj); e_box_pack_options_set(si->base_obj, 1, 1, /* fill */ @@ -135,6 +136,7 @@ e_ilist_append(Evas_Object *obj, Evas_Object *icon, const char *label, int heade mw, mh, /* min */ 99999, 99999 /* max */ ); + e_box_thaw(sd->box_obj); evas_object_lower(si->base_obj); evas_object_event_callback_add(si->base_obj, EVAS_CALLBACK_MOUSE_DOWN, _e_smart_event_mouse_down, si); evas_object_event_callback_add(si->base_obj, EVAS_CALLBACK_MOUSE_UP, _e_smart_event_mouse_up, si); @@ -392,7 +394,7 @@ e_ilist_count(Evas_Object *obj) EAPI void e_ilist_clear(Evas_Object *obj) { - INTERNAL_ENTRY; + API_ENTRY return; while (sd->items) { E_Smart_Item *si; @@ -418,6 +420,20 @@ e_ilist_nth_is_header(Evas_Object *obj, int n) return 0; } +EAPI void +e_ilist_freeze(Evas_Object *obj) +{ + API_ENTRY return; + e_box_freeze(sd->box_obj); +} + +EAPI void +e_ilist_thaw(Evas_Object *obj) +{ + API_ENTRY return; + e_box_thaw(sd->box_obj); +} + /* local subsystem functions */ static void _e_smart_event_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) diff --git a/src/bin/e_ilist.h b/src/bin/e_ilist.h index 68142c313..b964c6250 100644 --- a/src/bin/e_ilist.h +++ b/src/bin/e_ilist.h @@ -29,6 +29,8 @@ EAPI Evas_Object *e_ilist_selected_icon_get (Evas_Object *obj); EAPI int e_ilist_count (Evas_Object *obj); EAPI void e_ilist_clear (Evas_Object *obj); EAPI int e_ilist_nth_is_header (Evas_Object *obj, int n); +EAPI void e_ilist_freeze (Evas_Object *obj); +EAPI void e_ilist_thaw (Evas_Object *obj); #endif #endif diff --git a/src/bin/e_int_config_mime.c b/src/bin/e_int_config_mime.c index 761ce462b..1aff1eb03 100644 --- a/src/bin/e_int_config_mime.c +++ b/src/bin/e_int_config_mime.c @@ -213,12 +213,15 @@ _fill_list(E_Config_Dialog_Data *cfdata, char *mtype) Evas_Coord w, h; Evas *evas; + evas_event_freeze(evas_object_evas_get(cfdata->gui.list)); + edje_freeze(); + e_widget_ilist_freeze(cfdata->gui.list); evas = evas_object_evas_get(cfdata->gui.list); e_widget_ilist_clear(cfdata->gui.list); for (l = cfdata->mimes; l; l = l->next) { Config_Mime *m; - Evas_Object *icon; + Evas_Object *icon = NULL; const char *tmp; char buf[4096]; int edj = 0, img = 0; @@ -226,7 +229,6 @@ _fill_list(E_Config_Dialog_Data *cfdata, char *mtype) m = l->data; if (!m) return; if (!strstr(m->mime, mtype)) continue; - tmp = e_fm_mime_icon_get(m->mime); if (!tmp) snprintf(buf, sizeof(buf), "e/icons/fileman/file"); @@ -263,6 +265,9 @@ _fill_list(E_Config_Dialog_Data *cfdata, char *mtype) e_widget_ilist_go(cfdata->gui.list); e_widget_min_size_get(cfdata->gui.list, &w, &h); e_widget_min_size_set(cfdata->gui.list, w, 200); + e_widget_ilist_thaw(cfdata->gui.list); + edje_thaw(); + evas_event_thaw(evas_object_evas_get(cfdata->gui.list)); } static void @@ -271,6 +276,9 @@ _fill_tlist(E_Config_Dialog_Data *cfdata) Evas_List *l; Evas_Coord w, h; + evas_event_freeze(evas_object_evas_get(cfdata->gui.tlist)); + edje_freeze(); + e_widget_ilist_freeze(cfdata->gui.tlist); e_widget_ilist_clear(cfdata->gui.tlist); for (l = types; l; l = l->next) { @@ -293,6 +301,9 @@ _fill_tlist(E_Config_Dialog_Data *cfdata) e_widget_ilist_go(cfdata->gui.tlist); e_widget_min_size_get(cfdata->gui.tlist, &w, &h); e_widget_min_size_set(cfdata->gui.tlist, w, 225); + e_widget_ilist_thaw(cfdata->gui.tlist); + edje_thaw(); + evas_event_thaw(evas_object_evas_get(cfdata->gui.tlist)); } static void diff --git a/src/bin/e_widget_ilist.c b/src/bin/e_widget_ilist.c index 3f25c66ff..244a721ca 100644 --- a/src/bin/e_widget_ilist.c +++ b/src/bin/e_widget_ilist.c @@ -266,6 +266,24 @@ e_widget_ilist_nth_is_header(Evas_Object *obj, int n) return e_ilist_nth_is_header(wd->o_ilist, n); } +EAPI void +e_widget_ilist_freeze(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + e_ilist_freeze(wd->o_ilist); +} + +EAPI void +e_widget_ilist_thaw(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + e_ilist_thaw(wd->o_ilist); +} + static void _e_wid_del_hook(Evas_Object *obj) { diff --git a/src/bin/e_widget_ilist.h b/src/bin/e_widget_ilist.h index fbb79d207..d68efef36 100644 --- a/src/bin/e_widget_ilist.h +++ b/src/bin/e_widget_ilist.h @@ -25,6 +25,8 @@ EAPI Evas_Object *e_widget_ilist_selected_icon_get(Evas_Object *obj); EAPI int e_widget_ilist_count(Evas_Object *obj); EAPI void e_widget_ilist_clear(Evas_Object *obj); EAPI int e_widget_ilist_nth_is_header(Evas_Object *obj, int n); - +EAPI void e_widget_ilist_freeze(Evas_Object *obj); +EAPI void e_widget_ilist_thaw(Evas_Object *obj); + #endif #endif