From: WooHyun Jung Date: Mon, 21 Oct 2013 10:45:53 +0000 (+0900) Subject: elementary/elm_entry.c : evas_smart_objects_calculate in elm_widget_show_region_set... X-Git-Tag: submit/devel/efl/20131029.104556~25 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=534253f783aaa2a5c5abbc43656507027aee8dfd;p=platform%2Fupstream%2Felementary.git elementary/elm_entry.c : evas_smart_objects_calculate in elm_widget_show_region_set can delete elm_entry. --- 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); } } }