woohyun pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=534253f783aaa2a5c5abbc43656507027aee8dfd
commit 534253f783aaa2a5c5abbc43656507027aee8dfd Author: WooHyun Jung <wh0705.j...@samsung.com> Date: Mon Oct 21 19:45:53 2013 +0900 elementary/elm_entry.c : evas_smart_objects_calculate in elm_widget_show_region_set can delete elm_entry. --- src/lib/elm_entry.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c index 8460dd6..ed83299 100644 --- a/src/lib/elm_entry.c +++ b/src/lib/elm_entry.c @@ -522,7 +522,13 @@ _elm_entry_smart_theme(Eo *obj, void *_pd, va_list *list) (sd->entry_edje, "elm.text", sd->input_panel_return_key_disabled); if (sd->cursor_pos != 0) - elm_entry_cursor_pos_set(obj, sd->cursor_pos); + { + // elm_entry_cursor_pos_set -> cursor,changed -> widget_show_region_set + // -> smart_objects_calculate will call all smart calculate functions, + // and one of them can delete elm_entry. + evas_object_ref(obj); + elm_entry_cursor_pos_set(obj, sd->cursor_pos); + } if (elm_widget_focus_get(obj)) edje_object_signal_emit(sd->entry_edje, "elm,action,focus", "elm"); @@ -564,6 +570,9 @@ _elm_entry_smart_theme(Eo *obj, void *_pd, va_list *list) evas_object_smart_callback_call(obj, SIG_THEME_CHANGED, NULL); + if (sd->cursor_pos != 0) + evas_object_unref(obj); + if (ret) *ret = EINA_TRUE; } @@ -582,8 +591,8 @@ _cursor_geometry_recalc(Evas_Object *obj) (sd->entry_edje, "elm.text", &cx, &cy, &cw, &ch); if (sd->cur_changed) { - elm_widget_show_region_set(obj, cx, cy, cw, ch, EINA_FALSE); sd->cur_changed = EINA_FALSE; + elm_widget_show_region_set(obj, cx, cy, cw, ch, EINA_FALSE); } } else @@ -656,8 +665,8 @@ _deferred_recalc_job(void *data) (sd->entry_edje, "elm.text", &cx, &cy, &cw, &ch); if (sd->cur_changed) { - elm_widget_show_region_set(data, cx, cy, cw, ch, EINA_FALSE); sd->cur_changed = EINA_FALSE; + elm_widget_show_region_set(data, cx, cy, cw, ch, EINA_FALSE); } } } --