edje entry: fill content info when text is deleted by imf event 71/154471/1
authorYoungbok Shin <youngb.shin@samsung.com>
Fri, 29 Sep 2017 06:29:31 +0000 (15:29 +0900)
committerYoungbok Shin <youngb.shin@samsung.com>
Tue, 10 Oct 2017 08:56:17 +0000 (17:56 +0900)
Summary:
There was missing info when text is deleted by _edje_entry_imf_event_delete_surrounding_cb().
@fix

Test Plan: N/A

Reviewers: kimcinoo, raster, cedric, jpeg, herdsman

Differential Revision: https://phab.enlightenment.org/D5240

Change-Id: I79a147326d52f7658f0dbf521a9c652378fbc5c1

src/lib/edje/edje_entry.c

index 561e3a2..d0f9ac0 100644 (file)
@@ -5251,6 +5251,7 @@ _edje_entry_imf_event_delete_surrounding_cb(void *data, Ecore_IMF_Context *ctx E
    Edje_Entry_Change_Info *info;
    int cursor_pos;
    int start, end;
+   char *tmp;
 
    if ((!rp) || (!ev)) return;
    if ((rp->type != EDJE_RP_TYPE_TEXT) ||
@@ -5291,13 +5292,19 @@ _edje_entry_imf_event_delete_surrounding_cb(void *data, Ecore_IMF_Context *ctx E
    end = evas_textblock_cursor_pos_get(del_end);
    if (start == end) goto end;
 
-   evas_textblock_cursor_range_delete(del_start, del_end);
-   _anchors_get(en->cursor, rp->object, en);
-   _anchors_update_check(ed, rp);
    info = calloc(1, sizeof(*info));
    info->insert = EINA_FALSE;
    info->change.del.start = start;
    info->change.del.end = end;
+
+   tmp = evas_textblock_cursor_range_text_get(del_start, del_end, EVAS_TEXTBLOCK_TEXT_MARKUP);
+   info->change.del.content = eina_stringshare_add(tmp);
+   if (tmp) free(tmp);
+
+   evas_textblock_cursor_range_delete(del_start, del_end);
+   _anchors_get(en->cursor, rp->object, en);
+   _anchors_update_check(ed, rp);
+
    _edje_emit(ed, "entry,changed", en->rp->part->name);
    _edje_emit_full(ed, "entry,changed,user", en->rp->part->name, info,
                    _free_entry_change_info);