forked from enlightenment/efl
Elm_Entry: Fix dropped text data insertion
Fixes bad drag&drop into entry widgets, since the drop callback assumed that the dropped text ends with a NULL character. How to reproduce: 1. Open 'elementary_test -to Entry' 2. Open some application (e.g. Firefox) 3. Select some (preferably short) text, and drag&drop it to the entry widget. This sometimes pastes additional corrupted text (better try with a 1-3 characters text). @fix
This commit is contained in:
parent
d4f5df772d
commit
e3baf4d3c1
|
@ -616,6 +616,7 @@ _drag_drop_cb(void *data EINA_UNUSED,
|
|||
Elm_Selection_Data *drop)
|
||||
{
|
||||
Eina_Bool rv;
|
||||
char *buf;
|
||||
|
||||
ELM_ENTRY_DATA_GET(obj, sd);
|
||||
|
||||
|
@ -626,7 +627,16 @@ _drag_drop_cb(void *data EINA_UNUSED,
|
|||
|
||||
if (!rv) WRN("Warning: Failed to position cursor: paste anyway");
|
||||
|
||||
elm_entry_entry_insert(obj, drop->data);
|
||||
buf = malloc(drop->len + 1);
|
||||
if (!buf)
|
||||
{
|
||||
ERR("Failed to allocate memory for dropped text %p", obj);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
memcpy(buf, drop->data, drop->len);
|
||||
buf[drop->len] = '\0';
|
||||
elm_entry_entry_insert(obj, buf);
|
||||
free(buf);
|
||||
edje_object_part_text_cursor_copy
|
||||
(sd->entry_edje, "elm.text", EDJE_CURSOR_USER, /*->*/ EDJE_CURSOR_MAIN);
|
||||
|
||||
|
|
Loading…
Reference in New Issue